c#继承(抽象类、接口)
new
覆盖基类中的同名成员。
override
重写virtual和abstract函数。
abstract
为了定义三角形、矩形类,可以先定义图形类,再在图形类的基础上派生出具体类。图形类不能被实例化,因此可以定义为抽象类。
抽象类——abstract修饰。无法实例化。
抽象方法——abstract修饰。只能在抽象类中出现。只声明不定义。派生类必须使用override关键字重写抽象类的所有方法。
抽象类——abstract修饰。无法实例化。
抽象方法——abstract修饰。只能在抽象类中出现。只声明不定义。派生类必须使用override关键字重写抽象类的所有方法。
interface
接口是一种约定,是一种继承方式。接口中只声明函数,不给出定义。若一个类继承了该接口,就一定要给出接口中所有声明函数的定义。
特性。
接口不能被实例化。接口可以多继承。
接口中只能声明不能定义。
如果基类继承了接口,那么派生类都将继承该接口的实现。
建议接口名字以大写的I字母开头。
若多继承时导致接口成员的二义性,解决方案为:强制类型转换。
如果基类继承了接口,那么派生类都将继承该接口的实现。
建议接口名字以大写的I字母开头。
若多继承时导致接口成员的二义性,解决方案为:强制类型转换。
辨析
new用于普通函数的重写。
override用于virtual和abstract函数的重写。
虚函数是动态绑定的基础。