C#允许把类和函数声明为 abstract。
抽象类不能实例化,抽象类可以包含普通函数和抽象函数,抽象函数就是只有函数定义没有函数体。
显然抽象函数本身也是虚拟的Virtual(只有函数定义,没有函数体实现)。
类是一个模板,那么抽象类就是一个不完整的模板,我们不能使用不完整的模板去构造对象。
abstract class Bird//一个抽象类 就是一个不完整的模板
{
private float speed;
public void Eat()
{
}
public abstract void Fly();//所有继承Bird的子类都必须实现Fly方法
}
class Crow:Bird //我们继承了一个抽象类的时候,必须去实现抽象方法
{
public override void Fly()
{
Console.WriteLine("乌鸦在飞行");
}
}
调用
Crow crow = new Crow();
crow.Fly();
Bird bird = new Crow();//我们可以通过抽象类去声明对象 但是不可以去构造
bird.Fly();
结果