20150429 C#面向对象 继承与多态

继承
一、什么继承?
1.父类的相关成员,会自动派生到子类去。public protected
2.子类可以扩展父类的相关成员。
3.子类可以替代父类来使用,但父类不能替代子类来使用。
二、继承的语法:
class 子类名:父类名
{

}
三、继承的规则:
(一)成员变量的继承
1.public protected
2.如果同名就隐藏。子类与父类各自用各自的成员。
(二)属性的继承
1.属性一般只有public
2.如果同名就隐藏。子类与父类各自用各自的成员。
(三)方法的继承
1.public protected
2.如果同名就隐藏。子类与父类各自用各自的成员。
3.重写:
a.把父类的方法设为虚方法,virtual。——父类说:这个方法可以被重写。
b.在子类中,使用override来重写父类中的方法。——子类确认我重写这个方法。

注意: 1.如果父类方法中没有声明virtual,子类中有override重写它。会报错。
2.如果父类中声明了virtual,子类中没有override去重写它,不会报错,但会被隐藏。
3.虚方法一虚到底。子类即使override父类的虚方法,子类的这个方法依然还是虚方法。

(四)构造函数的继承
1.如果父类没有写构造函数,或者父类构造函数没有参数。子类的构造函数没有特殊要求。
2.如果父类的构造函数都有参数,子类构造函数必须向父类构造函数中传递值。base();

注:在子类中调用父类的方法时,可以使用base.xxxx来调用。一般用调用父类被重写的方法。

base--父类对象。
this--当前对象。


多态:不是一个新东西。在继承的基础上实现出来的。
多态的实现是:父类的引用指向子类的实例。当指向不同子类的时候,父类引用调用子类方法的时候,呈现出不同的形态。

原文地址:https://www.cnblogs.com/m123/p/4465519.html