抽象方法和虚方法的区别:
抽象方法:
- 抽象方法需要在抽象类中定义
- 含有一个或多个抽象方法的类一定是抽象类
- 抽象类不一定含有抽象方法
- 抽象方法只有声明没有实现
- 非抽象的派生类必须要override该抽象方法
- 如果派生类没有override基类的抽象方法,则派生类只能定义为抽象类,不能定义为实体类
虚方法:
- 抽象方法是虚方法的特例
- 虚方法可以定义中抽象类中也可以定义中实体类中
- 虚方法在基类中既有声明又有实现
- 虚方法在派生类中可以override 但不是必须的
- 虚方法的使用体现了OOP的多态理念
- 纯虚方法是虚方法的一种
示例:
//含有抽象方法的基类
abstract class Base { //This is field, Used for Name. private string name = string.Empty; //Define Name attribute and Name have read and write permissions public string Name { get { return name; } set { Name = value; } } //Define a abstract method public abstract void A(); } //派生出非抽象类 抽象方法A()必须override class SubBase:Base { public string SubNmae = string.Empty; public override void A() { SubNmae = "Cayman"; } }