假如这个世界上只剩下你一个人,当你正坐在屋子里的时候,这时突然响起了敲门声...

[原创]接口、类、抽象类、对象的另类解释

上一篇 / 下一篇  2008-03-23 09:40:02

查看( 153 ) / 评论( 4 )
大家也许都知道做工艺器或是工厂里做生产某些产品的模具模具。如做一个金属的五角星,只要将钢水罐到五角星的模具模具里就可以很容易地制做五角星。
W(? Gw`;q*\+o;{6}0ITPUB个人空间.\#i Wa{9t(S
我们也可以将类比喻成做五角星的模具。  而生产出的一个个五角星就是一个个对象。 为了建立不同的对象(有的是金属的、有的塑料的,等等),可通过向模具里灌入不同的液态材料就可以制做。这也相当于向类的构造方法中传入不同的参数(相当于不同的液态材料)。
qk V/\z e0
#|Aq;| ](X'}Fv;`t0还有就是接口,如果说类是对象的抽象,那么接口就是类的抽象。
l5`!X.zX};sT0我们也可以将接口看成是制做这个五角星模具的规格列表(相当于接口中的抽象方法)。也就是说,只有这个模具(类)符合(实现)相应的规格(接口),才会成为制做五角星的模具模具。
h!\*{0w[0
M1K]t,T$b0哈哈,当然,这个使用模具生成五角星及其他产品的工厂可以看成是对象工厂。ITPUB个人空间|HRDB;PJ
ITPUB个人空间Q~6@'tEM\TSa
class ObjectFactory
?"p)I@u E1B8m0{ITPUB个人空间 {tU5xOS8o:K+t/XVP
    public static 五解星 create五角星() {}ITPUB个人空间h|8D!evv
   ITPUB个人空间&] n:Q:NX~"V
    public static 圆 create圆() {}
Gr$['?+F_-Fd0ITPUB个人空间2\b{ aN
      public static 椭圆 create椭圆() {}ITPUB个人空间N ?Ho.a1QG2h7D.T
   ... ...ITPUB个人空间O`7e4E)d"G7z
}
m#~u eH"YB0ITPUB个人空间yk ji-[

HK*B:Q*^%Y9W KAn0也就是说,类和接口都不是实际的产品,都不能拿来用,类相当于模具(没人会拿模具模具在商店里卖吧,估计只有对象工厂会买),而接口只相当于制做模具的规格列表,如尺寸、角度等。而这些规格列表的内容需要在具体类中实现才可能成为具体的模具,如长度和宽度,如果在类中实现为长度等于宽度,那么这个类就成为一个成方形的模具,如果长度不等于宽度,就是一个长方形的模具。然后再实例化这个模具(类),就生成出一个个正方形或长方形对象。ITPUB个人空间WgXW p\
ITPUB个人空间3I/x}!b^5Bda!_H
ITPUB个人空间S,p8zt f*c8sU)P
在面向对象理论中还有一个抽象类,这个抽象类其实就相当于一个半成品的模具。如只实现在长度和宽度(相当于在抽象类中已实现的方法),并没有实现深度(这个深度相当于抽象类中的抽象方法,这个抽象方法需要在抽象类的子类中实现)。所以这个模具就是半成品了。因此,是无法直接拿半成品的模具(抽象类)去生产(实例化)产品(对象)的。ITPUB个人空间/JLx?OE0PL C
ITPUB个人空间'[)U_%Yjs SiS L
[本帖最后由 银河使者 于 2008-3-23 09:42 编辑]

TAG:

sinkeler发布于2008-03-23 19:52:59
鼓励
justforregister的个人空间 justforregister 发布于2008-03-23 21:11:10
呵呵
dream_zdf发布于2008-03-23 21:56:59
喜欢这个银河使者
javalearning101的个人空间 javalearning1014 发布于2008-03-27 11:23:59
很形象的解释  非常棒
我来说两句

(可选)

日历

« 2008-10-11  
   1234
567891011
12131415161718
19202122232425
262728293031 

数据统计

  • 访问量: 12302
  • 日志数: 119
  • 建立时间: 2008-02-08
  • 更新时间: 2008-10-01

RSS订阅

Open Toolbar