【摘要】:如图5-2所示,货车类、客车类在底层,它们的内容丰富具体;将货车、客车的“在陆地运输”共性抽象出来,形成更为抽象的汽车类;同理,将汽车、轮船和飞机的“运输”共性抽象出来,形成运输工具类。但运输工具类可以作为货车类、客车类的父类。这种现象是普遍存在的。只应作为其下层类的父类,服务由子类来实现。这种类叫抽象类。
5.4 抽象类和最终类
我们知道,客观世界中存在许多层次关系,类的继承反映了这种层次关系。而且层次越高越抽象,层次越低越具体、越丰富。如图5-2所示,货车类、客车类在底层,它们的内容丰富具体;将货车、客车的“在陆地运输”共性抽象出来,形成更为抽象的汽车类;同理,将汽车、轮船和飞机的“运输”共性抽象出来,形成运输工具类。它如此抽象,以致于不能实例化为一个对象,在现实世界中只有货车、客车这样具体的对象,没有运输工具类所对应的对象。但运输工具类可以作为货车类、客车类的父类。这种现象是普遍存在的。
图5-2 运输工具类的层次结构
在类的层次结构中,高层类的作用如下:
·高层的类描述类对外提供的服务,并实现这种服务,即定义了下层子类都拥有的变量和方法,为方法提供默认实现代码,从而提高了代码复用。
·描述类对外提供的服务,但没有实现这种服务,由子类来实现,即只是作为父类定义了下层子类都拥有的变量和方法,部分方法或全部方法没有实现代码。这是因为同一方法在子类中实现代码各不相同,无法在父类中提供统一的实现代码,只能留在子类中各自实现。如运输工具类。
这样,当一个类表示对外提供的服务,但没有实现这种服务时,它就不应该实例化为一个对象。只应作为其下层类的父类,服务由子类来实现。这种类叫抽象类。
免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。