abstract 所修饰的内容缺少实现或者未完成实现。它可以用来修饰:类,方法,属性,索引器或事件。
用abstract修饰的类 叫做抽象类。
标记为抽象或者包含在抽象类中的成员必须通过从抽象类派生的类来实现。
抽象类的特性:
- 抽象类不能被实例化,对抽象类使用new运算符是错误的。
- 抽象类可以包含抽象方法和抽象访问器
- 不能用sealed来修饰抽象类,因为这两个修饰符的含义是相反的,采用sealed修饰的类是密封的,不能被继承,而抽象类只能用来做基类
- 从抽象类派生的非抽象类必须包括继承的所有抽象方法和抽象访问器的实现
- 从抽象类继承的类,如果没有提供对父类方法的实现,那子类也是抽象类
- 抽象类可以继承实体类:a. 实体类可继承 b.实体类中中必须有子类可以访问的构造函数
- 抽象类必须为接口成员提供实现 ,实现接口的抽象类可以讲接口方法映射到抽象方法上。
抽象方法
- 抽象方法是隐式的虚方法
- 只允许在抽象类中声明抽象方法
- 抽象方法不提供实际的实现,所以没有方法体,方法的声明以分号结束,没有大括号:public abstract void MyMethod();
- 用override来重写抽象方法,override是非抽象类的成员。
- 抽象方法中不能用static或者virtual修饰符
抽象属性
- 在静态属性上使用abstract修饰符是错误的
- 在派生类中,使用override可以重写抽象的继承属性。