抽象类和接口的关系之我的图解(转自Jack Fan)

最近,在网络上随意翻阅到一堆描述类(或者抽象类)和接口之间关系的文章,说的都很不错,这篇文章我觉得写得不错,大家可以先看看:点击查看,毕竟我的这篇随笔是基于这篇文章写的,呵呵。

那篇文章说的是抽象类,一句话:“抽象类定义了你是什么东东,而接口定义了你有什么功能”。也许初看不出来什么端倪,下面看一下我的图解吧。

这是一个以Train(火车)为抽象类(因为“火车”没有一般的,必须给予一定的定义)的基类图,下面三个派生类PassengerTrain(客运火车),FreightTrain(货运火车),他们拥有Train的核心定义(如车轮规格、引擎规格等)。

下面,我们来看看,我们用同样的方法,定义一个抽象类Car,又有三个具体的派生类继承了它的核心定义:

现在,我们要为这些交通工具(暂时用这个词来总称它们吧)添加一些基本功能,我们就加入了两个接口来实现特定的功能,IPassengerCarrier(载客接口)和IHeavyLoadCarrier(载重接口),新的关系图如下:

可以看到,Car的派生类都有一个IPassengerCarrier接口,因为它们都能执行载客的功能,Train的派生类中,正常来说,只有载客火车能拥有载客的功能,自然地它就拥有了IPassengerCarrier接口;再来看载重接口(IHeavyLoadCarrier),正常来说,suv和皮卡(pickup)都有载重(货)的功能,和载货火车一样,它们三个都继承了IHeavyLoadCarrier接口。

上面就是我个人对这两个概念(抽象类和接口)的理解,有很多地方可能会有错误,望大家谅解,呵呵。

posted @ 2009-01-05 15:12  小贱  阅读(397)  评论(0编辑  收藏  举报