作为C#面向对象编程的三大特性之一的继承,在C#编程中有着举足轻重的位置,它是学习面向对象编程的核心概念。
任何类都可以从另一个类继承,也就是说,这个类拥有它继承的类的所有成员。
一,类成员的访问控制:
在OOP中,被继承的类称为父类(也就是基类),C#中的对象只能派生于一个基类。在继承一个基类时,派生类不能访问基类的私有成员,但可以访问其公共成员,而且派生类和外部代码都可以访问公共成员,这就是说,如果只使用public, private两个可访问性修饰符,不仅可以让一个成员被基类和派生类访问,而且能够被外部的任何代码访问。为了实现更好的类成员控制性,C#又提供了其他三种可访问性修饰符,阐述如下:
public -----成员可以由任何代码访问。
private-----成员只能由类内部的代码访问(如果没有任何关键字修饰,就默认使用这个关键字)。
internal-----成员只能由定义它的工程(程序集)内部的代码访问。
protected-----成员只能由类和它的派生类访问。
其中,internal 与 protected 可以合并使用,所以也有protected internal成员。它们只能由程序集中派生类的代码访问。
此外,字段,方法,属性都可以使用static关键字来声明,这表示它们是属于类的静态成员,不是对象实例的成员,只能由类名来访问。
二,继承及其相关的关键概念:
(1)接口
接口是把隐式的公共方法和属性组合起来,以封装特定功能的一个集合。
一旦定义了接口,就可以在类中实现它。这样,类就可以支持接口所指定的所有属性和成员。
接口的特点:
接口不能单独存在,不能像实例化一个类那样实例化接口,必须通过其派生类来实现之;
接口不能包含实现其成员的任何代码,而只能定义成员本身;
在继承了接口的派生类中实现接口的成员,必须实现该接口的所有成员,而不能只实现部分;
一个类可以支持多个接口(接口支持多继承),多个类也可以支持相同的接口;
接口及其成员必须是public的(同样的,虚拟成员virtual也必须是公共的);