1.基类和扩充类
(1)C#实现继承的方式:类继承和接口继承
(2)继承用冒号(:)表示。被继承的叫做父类或者基类,从基类继承的类叫扩充类,又叫派生类或子类。所有类的基类System.Object
声明方式:[访问修饰符]class 扩充类名称:基类名称
{
}
若B继承自A,也可以使用强制转换操作将其转换为A对象。如:A b=(A)new B();此时,B对象将被限制为A对象的数据和行为,而无法再访问B对象中的数据和行为,除非A中的方法被B重载,将会访问B的方法。将B强制转换为A后,还可以将A重新转换为B,但是,并非A的所有实例在任何情况下都可强制转为B,只有实际上是B的实例的那些实例才可以强制转换为B。
(3)扩充类不能继承基类中定义的private方法,只能继承基类的public成员或者protected成员。
(4)初始化基类时,会首先调用基类的构造函数在调用扩充类的构造函数。
2.多态性:
(1)定义:同一操作作用于不同类的实例,不同的类将进行不同的解释,最后产生不同的结果。即:建立一个父类的对象,它的内容可以是这个父类的,也可以是这个子类的,子类和父类都定义有相同的方法;当使用对象调用这个方法的时候,父类里的同名对象将被调用,当在父类的这个方法前加virtual关键字,子类的同名方法将被调用。
(2)实现多态的方法:
(I)通过继承实现。多个类可以继承自同一个类,每个扩充类可根据重写基类成员以提供不同的功能。
(II)通过抽象类实现。抽象类本身不能被实例化,只能在扩充类中通过继承使用。抽象类的部分或全部成员不一定都要实现,但要在继承类中全部实现,抽象类中已实现的成员扔可以被重写,并且继承类仍可以实现其他功能。
(III)通过接口实现。接口仅声明类需要实现的方法、属性、事假;以及每个成员需要接受和返回的参数类型,而他们的特定实现需要实现类去完成。