抽象
抽象类通常表示一个抽象的概念,提供一个继承的出发点。当设计抽下类时候,尽可能的拥有更多的相同代码,更少的数据。
- 抽象类、方法用abstract关键字修饰;
- 抽象成员不能是private。
- 抽象类中可以拥有普通类所有的成员。
- 抽象方法中,不能有方法体。
- 抽象类中可以有非抽象方法,但是只要有抽象方法存在,该类就必须声明为抽象类。
- 抽象方法只能声明在抽下类中。
- 抽象类不能被实例化。
- 抽象类被继承后,子类必须实现父类所有的抽象成员。
1 /// <summary> 2 /// 抽象类 3 /// </summary> 4 internal abstract class MyClass 5 { 6 protected abstract void FunctionA(); 7 8 public void FunctionB() 9 { 10 11 } 12 13 } 14 15 /// <summary> 16 /// 子类 17 /// </summary> 18 class SubClass:MyClass 19 { 20 21 protected override void FunctionA() 22 { 23 throw new NotImplementedException(); 24 } 25 }
接口
接口是把一组公共方法和属性组合起来,以封装特定功能的一个集合,一旦一个类实现了该接口,就必须实现接口给中所有的成员。
- 声明接口用interface修饰。
- 接口不能声明构造函数和字段
- 接口中的所有成员均不能有修饰符,默认是public
- 接口中不能用static、virtual修饰。
- 类实现了接口,该类或者该类的子类必须实现所有接口中成员。
- 一个类可以实现多个接口。