abstract修饰符可以和类、方法、属性、索引器及事件一起使用。 在类声明中使用abstract修饰符以指示类只能是其他类的基类。 抽象类具有以下特性:
1.抽象类不能实例化。
2.抽象类可以包含抽象方法和抽象访问器。
3.不能用sealed修饰符修改抽象类,这意味着该类不能被继承。
4.从抽象类派生的非抽象类必须包括继承的所有抽象方法和抽象访问器的实实现。 在方法或属性声明中使用abstract修饰符以指示此方法或属性不包含实现。 抽象方法具有以下特性:
1.抽象方法是隐式的virtual方法。
2.只允许在抽象类中使用抽象方法声明。
3.因为抽象方法声明不提供实实现,所以没有方法体;方法声明只是以一个分号结束,并且在签名后没有大括号 ({ })。例如: public abstract void MyMethod();
4.实现由overriding 方法提供,它是非抽象类的成员。
5.在抽象方法声明中使用static或virtual修饰符是错误的。 除了在声明和调用语法上不同外,抽象属性的行为与抽象方法一样。
1.在静态属性上使用abstract修饰符是错误的。
2.在派生类中,通过包括使用override修饰符的属性声明可以重写抽象的继承属性。 3.抽象类必须为所有接口成员提供实现。 abstract 修饰符用于表示所修饰的类是不完整的,并且它只能用作基类。抽象类与非抽象类在以下方面是不同的:
1.抽象类不能直接实例化,并且对抽象类使用 new 运算符是编译时错误。虽然一些变量和值在编译时的类型可以是抽象的,但是这样的变量和值必须或者为 null,或者含有对非抽象类的实例的引用(此非抽象类是从抽象类派生的)。
2.允许(但不要求)抽象类包含抽象成员。
3.抽象类不能被密封。 4.当从抽象类派生非抽象类时,这些非抽象类必须具体实现所继承的所有抽象成员,从而重写那些抽象成员。 |