当定义一个类时,常常需要定义一些方法来描述该类的行为特征,但有时这些方法的实现方式时无法确定的。例如在定义Animal类时Shout()方法用于表示动物的叫声,但是不同动物的叫声也是不同的,因此在Shout()方法中无法准确地描述具体时那种动物的叫声。
针对上述的情况,C#允许在定义方法时不写方法体。不包括方法的方法为抽象方法,抽象方法必须用关键字abstract来修饰,具体示例如下:
abstract void Shout ();//定义抽象方法Shout()
当一个类中包含了抽象方法,该类也必须使用关键字abstract来修饰,使用关键字abstract修饰的类为抽象类,具体实例如下:
//定义抽象类Animal
abstract class Animal {
abstract void Shout ();//定义抽象方法Shout()
}
需要注意的是,包含抽象方法的类必须声明为抽象类,但是抽象类可以不包含抽象方法。另外,抽象类是不可以类实例化的,因为抽象类中有可能包含抽象类,抽象方法是没有方法体的,不可以被调用。如果想调用抽象类中定义的方法,则需要创建一个子类,在子类中实现抽象中的抽象方法。