面向对象高级 5.4抽象类和接口
抽象类简单来说,就是当定义一个类时,常常要定义一些方法来描述该类的行为特征,但有时这些方法的实现方式是无法确定的。在一些情况下在定义方法时不写方法体,不包含方法体的方法为抽象方法,抽象方法必须使用abstract关键字修饰,使用abstract关键字修饰的类为抽象类。在定义抽象类时需要注意,包含抽象方法的类必须声明为抽象类,但抽象类可以不包含抽象方法。另外,抽象类是不可以被实例化的,因为抽象类中有可能包含抽象方法,抽象方法是没有方法体的,不可以被调用。
抽象成员是被设计来被覆写的函数成员,抽象成员有以下特征: 1.它被用abstract修饰符标记。 2.它没有实现代码块。抽象成员的代码块用分号表示。抽象成员只可以在抽象类中声明,一共有4个类型的成员可以声明为抽象的:方法;属性;事件;索引。关于抽象成员必须在派生类中用相应的成员覆写,但不能把virtual修饰符附加到abstract修饰符。就像虚方法,派生类中抽象成员的实现必须指定override修饰符。
如果一个抽象类中的所有方法都是抽象的则可以将这个类用另外一种方式来定义,即接口,接口需要用interface关键字来声明。由于接口中的方法都是抽象方法,因此不能通过实例化对象的方式来调用接口中的方法,此时需要定义一个类,并实现接口中所有的方法。接口有三个特点:1.接口中的所有方法都是抽象的,因此接口不能被实例化。2.一个类可以实现多个接口,被实现的多个接口之间要用逗号隔开。3.一个接口可以实现多个接口,接口之间用逗号隔开。