标签:
一,概念理解
1. 继承可以理解为即由基类产生派生类的这一过程。如人类(基类),学生(派生类),小学生(更低一级派生类)。
2. 继承的派生类将拥有基类和自己的数据和行为。
二,继承规则
1.继承可以传递,object类为所有类的基类。
2.派生类应当是对基类的扩展。派生类无法去除已经继承的成员定义。
3.构造函数和析构函数不能被继承。
4.派生类如果定义了与继承而来的成员同名的新成员,就可以覆盖已继承的成员。但这并不因为这派生类删除了这些成员,只是不能再访问这些成员。我们可以使用new修饰符来声明具有相同名称或签名的新成员。
5.类可以使用virtual修饰符来定义虚方法,虚属性及虚索引指示器,它的派生类使用override修饰符来重载这些成员,从而实现类可以展示处多态性。
6.派生类只能从一个类中继承(即c#中只允许单一继承),但可以通过接口实现多重继承。---注:这个概念不是很清楚,可能后面需要进一步理解。
三,访问基类成员。
1.如果对类没有定义显示构造函数,则编译器将提供默认的构造函数,以初始化这些类的成员字段。但是,如果显式添加了构造函数,就可以有效的控制整个构造过程,我们可以通过base关键字来实现对基类公有或受保护成员的访问,但是只局限在构造函数、实例方法和属性访问器中。访问基类成员时,注意:
*调用基类上已被其他方法重写的方法;
*指定创建派生类实例时应调用的基类构造函数;
*基类访问只能在构造函数、实例方法或实例属性访问器中进行;
*从静态方法中使用base关键字是错误的。
四,重写方法
简单理解就是基类中声明为virtual、override或abstract的类型,在派生类中用override关键字重写方法。
注意:
*不能重写非虚方法或静态方法。
*override声明不能更改virtual方法的可访问性。
*不能使用修饰符new、static、virtual、abstract来修改override方法。
*重写属性声明必须指定与继承属性完全相同的访问修饰符、类型和名称,并且被重写的属性必须是virtual、abstract或override的。
标签:
原文地址:http://www.cnblogs.com/lilixiang-go/p/4511304.html