继承
C#继承规则
1、继承是可以传递的。如果C从B中派生,B又从A中派生,那么C不仅继承了B中声明的成员,同样也继承了A中的成员。Object类作为所有类的基类。
2、派生类应当是基类的扩展。派生类可以添加新的成员,但不能除去已经继承的成员的定义。
3、构造函数和析构函数不能被继承。除此之外的其他成员,不论对它们定义了怎样的访问方式,都能被继承。基类中成员的访问方式只能决定派生类能否访问它们。
4、派生类如果定义了与继承而来的成员同名的新成员,就可以覆盖已继承的成员。但这并不是因为这派生类删除了这些成员,只是不能再访问这些成员。(这点需要注意的是,如果是属性或者方法同名,但是签名不能,那就不是覆写,而是重载了)
5、类可以定义定义虚方法、虚属性以及虚索引指示器,它的派生类能够重载这些成员,从而实现类可以展示出多态性。
6、派生类只能从一个类中继承,可以通过接口实现多种继承。
在子类中我们可以通过base关键字访问基类的成员:
1、调用基类上已被其他方法重写的方法
2、指定创建派生类实例时调用的基类构造函数
3、基类访问只能在构造函数、实例方法或实例属性访问器中进行
4、从静态方法中使用base关键字是错误的
1、继承是可以传递的。如果C从B中派生,B又从A中派生,那么C不仅继承了B中声明的成员,同样也继承了A中的成员。Object类作为所有类的基类。
2、派生类应当是基类的扩展。派生类可以添加新的成员,但不能除去已经继承的成员的定义。
3、构造函数和析构函数不能被继承。除此之外的其他成员,不论对它们定义了怎样的访问方式,都能被继承。基类中成员的访问方式只能决定派生类能否访问它们。
4、派生类如果定义了与继承而来的成员同名的新成员,就可以覆盖已继承的成员。但这并不是因为这派生类删除了这些成员,只是不能再访问这些成员。(这点需要注意的是,如果是属性或者方法同名,但是签名不能,那就不是覆写,而是重载了)
5、类可以定义定义虚方法、虚属性以及虚索引指示器,它的派生类能够重载这些成员,从而实现类可以展示出多态性。
6、派生类只能从一个类中继承,可以通过接口实现多种继承。
在子类中我们可以通过base关键字访问基类的成员:
1、调用基类上已被其他方法重写的方法
2、指定创建派生类实例时调用的基类构造函数
3、基类访问只能在构造函数、实例方法或实例属性访问器中进行
4、从静态方法中使用base关键字是错误的