4、修饰的类是不完整的,并且它只能用作基类。抽象类与非抽象类在以下方面是不同的:o抽象类不能直接实例化,并且对抽象类使用new运算符是编译时错误。虽然一些变量和值在编译时的类型可以是抽象的,但是这样的变量和值必须或者为null,或者含有对非抽象类的实例的引用(此非抽象类是从抽象类派生的)。o允许(但不要求)抽象类包含抽象成员。o抽象类不能被密封。当从抽象类派生非抽象类时,这些非抽象类必须具体实现所继承的所有抽象成员,从而重写那些抽象成员。在下面的示例中 1abstract class A 2{ 3public abstr
5、act void F(); 4} 5abstract class B: A 6{ 7public void G() {} 8} 9class C: B10{11public override void F() {12// actual implementation of F13}14}抽象类A引入抽象方法F。类B引入另一个方法G,但由于它不提供F的实现,B也必须声明为抽象类。类C重写F,并提供一个具体实现。由于C中没有了抽象成员,因此可以(但并非必须)将C声明为非抽象类。 有关抽象类和抽象方法的问题,我个人也做了一些
7、blicabstractvoidF();4}56abstractclassB:A7{8publicvoidG()9{}10}1112classC:B13{14publicoverridevoidF()15{16//actualimplementationofF17}18}1920说明:抽象类A引入抽象方法F。类B引入另一个方法G,但由于它不提供F的实现,B也必须声明为抽象类。类C重写F,并提供一个具体实现。由于C中没有了抽象成员,因此可以(但并非必须)将C声明为非抽象类。 e. 抽象类不能被实例化,使用ov