你的位置:首页 > ASP.net教程

[ASP.net教程]面向对象的设计三大特征:二 多态


多态的两个明显的特点:

1. 从父类继承而来的子类可以转换成其父类。

2. 父类中的virtual方法,每个子类都可以override各自的方法;当用父类来引用这些子类,同样的操作而可以表现出不同的操作结果,就是多态。

 

子类继承基类的所有方法,字段,属性,事件。子类可以选择:

1. Override 基类中的virtual成员

    a. 只有方法、属性、事件和索引器(Indexers)可以是virtual,字段(Fields)不可以为virtual。

    b. 继承类只能override基类的virtual或abstract成员。

2. 继承基类的virtual成员,不去override

3. 用new去重写基类中非virtual的成员

密封(Sealed Override)

基类含有virtual成员,它的继承类(各个级别)都可以override。如果希望停止覆写需要用sealed override。之后的类只能用new去重新定义方法。

D classD = new D();

classD.DoWork();                  //调用方法D

A classA = new A();

 classA = (A)classD;               //方法也具有继承性,调用方法C

B和C都可以override A中的方法, 但是C用了Sealed, D就不能再override Dowork()方法了,只能用New; 当用父类去引用子类时(A指向D),我们发现override方法沿用继承的特性,由上至下直到找到方法C,并调用之。