抽象类与接口很相似,但是思路不一样。接口是公开类的成员,而抽象类则是抽象类成员以要求子类继承并实现。
抽象类:抽象类是对共性的抽象
- 和普通的类不同,抽象类需要用abstract来修饰类。
- 如果一个类中含有抽象方法,那么这个类必须抽象处理(声明为抽象类,不需要实现)。
- 继承抽象类的子类必须重写父类的抽象方法。
- 抽象类不能被实例化。
- 使用抽象类可以实现多态。
- 可以包含抽象方法和非抽象方法。
- 成员可以使用static、abstract、override、virtual修饰符。
定义抽象类,抽象方法:
abstract class CashSuper { public abstract double acceptCash(double money); }
使用抽象类抽象方法:
class CashNormal : CashSuper { public override double acceptCash(double money) { return money; } }
接口:接口是对行为的抽象
- 实现接口的任何非抽象类型都必须实现接口的所有成员。
- 接口不能被实例化。
- 接口可以包含事件、索引器、方法和属性。
- 类和结构可继承多个接口。
- 接口自身可从多个接口继承。
- 方法只能是抽象方法。
- 所有成员都是public static final的,不能使用static、abstract、override、virtual修饰符。
示例:
interface MyInterface { string ID { set; get; } string Name { set; get; } void ShowInfo(); }