一.类的继承
1.子类默认只继承基类的无参数构造函数,如果基类中没有无参数的构造函数则必须在子类中创建一个
2.密封类不允许被继承sealed
3.在子类中定义与基类同名方法时,使用new来隐藏基类成员
new public void Move(){}
如果需要同时使用基类和子类该成员时,如下
base.Move()
this.Move()
4.类中虚成员使用virtual修饰,在子类中重写基类虚成员时使用override,此时对基类虚函数的调用将会转移为对派生类中重载后的同名函数的调用
5.抽象类不能被实例化(有时候我们希望基类被继承后使用,基类本身的实例其实意义不大),抽象方法必须在子类中重写
6.继承的局限性,一个子类也许包含多种特性,一个基类无法满足,但是c#中不包含多重继承,这时需要使用接口
二.接口
1.接口使用interface来修饰,接口只定义不实现具体在接口的类中实现,接口可以多重继承、多种具体实现
2.定义接口如下
public interface IUnit{}
接口实现如下
public class CUnit : IUnit{}
3.接口的继承
interface I3 : I2,I3{}
在对接口I3实现的时候必须将I2和I3中方法进行实现
4.实现多个接口
如果多个接口含有同名方法,但是实现功能又不一致,这时需要指定接口对象来实现不同方法
interface I1{void Test();} interface I2{void Test();}这里有两个接口I1和I2,他们都有Test方法,在下面对其进行实现
class C1 : I1,I2
{
void I1.Test(){...}
void I2.Test(){...}
}