1、抽象类与抽象方法
1.1、版权声明
文章出处:http://www.cnblogs.com/wuhui369161243/archive/2009/03/29/1424677.html
文章作者:Me 丶紫龙
1.2、内容详情
朋友曾问我抽象类是否至少要有一个抽象方法,我查了很多资料,结果都是:“抽象类
允许(但不要求)抽象类包含抽象成员”。但是一个抽象类里不写抽象方法就没有意义了,
既然如此,还不如直接写个普通类? 在一个抽象类里可以不声明抽象方法,这在语法上是
没问题的,但实际来说,这样是没有任何意义的。也就是说,你为什么会选择写一个抽象类
呢?当然是为了想某个方法能够被OVERRIDE,以实现多态。后来查找MSDN 结果如下:
abstract 修饰符可以和类、方法、属性、索引器及事件一起使用。
在类声明中使用 abstract 修饰符以指示类只能是其他类的基类。
【抽象类】具有以下特性:
抽象类不能实例化。
抽象类可以包含抽象方法和抽象访问器。
不能用 sealed 修饰符修改抽象类,这意味着该类不能被继承。
从抽象类派生的非抽象类必须包括继承的所有抽象方法和抽象访问器的实实现。
在方法或属性声明中使用 abstract 修饰符以指示此方法或属性不包含实现。
【抽象方法】具有以下特性:
抽象方法是隐式的 virtual 方法。
只允许在抽象类中使用抽象方法声明。
因为抽象方法声明不提供实实现,所以没有方法体;方法声明只是以一个分号结束,
并且在签名后没有大括号 ({ })。例如:
public abstract void MyMethod();
实现由 overriding 方法提供,它是非抽象类的成员。
在抽象方法声明中使用 static 或 virtual 修饰符是错误的。
除了在声明和调用语法上不同外,抽象属性的行为与抽象方法一样。
在静态属性上使用 abstract 修饰符是错误的。
在派生类中,通过包括使用 override 修饰符的属性声明可以重写抽象的继承属性。
抽象类必须为所有接口成员提供实现。 |
|