【推荐】2019 Java 开发者跳槽指南.pdf(吐血整理) >>>
抽象类
抽象类是对类的进一步抽象,上一篇中我们定义的Animal类中,可定义为抽象类。
using System;
namespace Jerry
{
abstract class Animal
{
public string name;
public int age;
public abstract void Eat();
public abstract void Sleep();
}
class Dog : Animal
{
public override void Eat()
{
Console.WriteLine("吃骨头");
}
public override void Sleep()
{
Console.WriteLine("在床肚睡觉");
}
}
class Cat : Animal
{
public override void Eat()
{
Console.WriteLine("吃鱼");
}
public override void Sleep()
{
Console.WriteLine("在床上睡觉");
}
}
class Program
{
static void Main(string[] args)
{
Animal cat = new Cat();
cat.name = "狸花猫";
cat.age = 1;
cat.Eat();
cat.Sleep();
Animal dog = new Dog();
dog.name = "旺财";
dog.age = 2;
dog.Eat();
dog.Sleep();
}
}
}
使用Abstract关键字修饰的类叫做抽象类。
抽象类具有几大特点:
抽象类不能被实例化,主要用于被继承;抽象类里可以包含两种抽象成员,分别是抽象方法声明和抽象属性,同时可以包含其他非抽象成员;
如果继承抽象类,则需实现抽象类的抽象方法和属性;
不能使用Sealed关键字修饰抽象类,因为Sealed意味着不能被继承,同样Static也不能用于修饰抽象类,因为Static意味着会有一个实例。
如果一个类中没有包含足够的信息来描绘一个具体的对象,这样的类就是抽象类。 抽象类也是一个模板,只是这个模板只有定义,并没有具体实现而已,当我们一个非抽象类继承抽象类时,子类要将这些没有定义的要写清楚而已。 由于抽象类不能实例化对象,所以抽象类必须被继承,才能被使用。也是因为这个原因,通常在设计阶段决定要不要设计抽象类。
来源:oschina
链接:https://my.oschina.net/stupidpotato/blog/3154035