C#-抽象类、抽象函数
关键字:abstract
一:抽象类
抽象类:abstract修饰、无法实例化、可以包含抽象方法
抽象函数:不可以实例化;只有定义,没有函数体。
抽象类:可以向普通类一样封装数据。可包含普通方法、抽象方法;
普通类:不可包含抽象方法
抽象方法:没有方法体的纯虚方法,继承后必须去实现的方法
1.1 声明语法
abstract class Fruits{public string name;public abstract void Buy();
}
1.2 如何选择普通类还是抽象类:
-
不希望被实例化的对象,相对比较抽象的类可以使用抽象类。
-
父类中的行为不太需要被实现的,只希望子类去定义具体的规则的 可以选择 抽象类。然后使用其中的抽象方法来定义规则
若爷类为抽象类,子类不是,孙类也不必理会爷类中的抽象函数,因为父类已经实现
抽象类不可以被实例化,但可以遵循里氏替换原则,用父类容器装子类。
作用:适用整体框架设计
二:抽象函数
又称纯虚函数
2.1 特点:
-
只能在抽象类中声明
-
没有方法体
-
不能是私有的。public或protected都可以
-
继承后必须实现,用override重写
2.2 声明语法
abstract class Fruits{public string name;//抽象方法是不能有方法体的public abstract void Buy();
}
--------实现
class Apple:Fruits{public override void Buy(){};
}
Fruits f = new Apple();//遵循里氏替换原则
三:虚方法和抽象函数的区别
虚方法:子类可选择是否重写
抽象行数:子类必须重写