返回

Java编程思想

关灯
护眼
第3章(1 / 13)
强烈推荐: 星月灵猫传说 当军婚遭遇爱情上校先生,乃就从了我吧! 传媒之子 帅哥征女记:光明使者 性爱启示录 蜀山奇剑传 帅哥征女记:光明使者 黑暗中的寻觅 疯狂异能

定late逼nding”的概ฐ念。

为了执行后期绑定,但是并不知道将会被执行的确切代。

在某些语言中,

并对调用参数argument和返回值returnvalue执行类型检查无法此类保证的语

言被称为是弱类型的9aped,被调用的代码直到运行时刻๑才能ม被确定。当

你向对象送消息,你必须明确地声明希望某个方法具备后期绑定属性所。在这些语言中。这样,根据这一小段代

码的内容,每一个ฐ对象都可以具有不同的行为表现。当你向一个ฐ对象送消息时,该对象就

能ม够知道对这条消息应该做些什么เ。编译器,java使用一小段特殊的代码来替代绝对地址调用。这段代码使用,方แ法在缺省情况下不是动态绑定的。而在java

中,你不需要添加额๩,动态绑定是缺省行为。

在来看看几何形状的例子。整个类族其中ณ所有的类都基于相同一致的接口在本章前๩面已

有图示。我们要编写一,为了说明多态,它忽略๓类型的具体细节,仅仅和基类交互。

这段代码和类型特定信息是分离的decນoupled,这样做使代码编写更为简单,也更易于理

解。而且,如果通过继承机制ๆ添加一个ฐ新类型,例如hexaທgon,你编写的代码对shaທpe的新า

类型的处理与对已有类型的处理会同样出色。正因为如此,可以称这个程序是可扩展的

extensible。

如果用jaທva来编写一个方法后面很快你就会学到เ如何编写:

voiddostuffshapes{

色ra色;

sdra9;

}

这个方แ法可以与任何shape交谈,因此它是独立于任何它要绘制和擦除的对象的具体类型

的。如果程序中其他部分用到了dostuff方法:

9e9circle;๙

trianglet=๡ne9triangle;

linel=ne9line;

dostuffcນ;

dostufft;

dostuffl;

对dostuff的调用会被自动地正确处理,而不管对象的确切类型。

这是一个相当令人惊奇的诀窍。看看下面这行代码:

dostuffc;๙

如果被传入到预期接收shaທpe的方แ法中,究竟会生什么呢?由于cນircນle可以被dostuff

看作是shape,也就是说,dostuff可以送给shape的任何消เ息,circle都可以接收,那么,

这么做是完全安全且合乎逻辑的。

我们把将导出类看作是它的基类的过程称为ฦ“向上转型up9๗g”。“转型cນaທst”

这个名称的灵感来自于模型铸造的塑模动作,而“向上up”这个词来源于继承图的典型

布局方式:通常基类在顶部,而导出类在其下部散开。因此,转型为一个基类就是在继承图

中向上移动,即“向上转型up9g”。

一个面向对象程序肯定会在某处包含向上转型,因为这正是你如何将自己从必须知道确切类

型中ณ解放出来的关键。让我们再看看在dostuff中的代码:

色ra色;๙

sdraທ9;

注意这些代码并不是说“如果你是cນircle,请这样做;如果你是square,请那些做;……”。

如果你编写了那种检查shape实际上所有可能类型的代码,那么这段代码肯定是杂乱不堪

的,而且你需要在每次添加了新类型的shape之后去修改这段代码。这里你所要表达的意思

仅仅是“你是一个ฐshape,我知道你可以era色和dra9๗你自己,那么去做吧,但是要注意

细节的正确性。”

dostuff的代码给人印象深刻๑之处在于,不知何故,总是做了该做的。调用circນle的dra9

方แ法所执行的代码与调用squaທre或line的dra9方法所执行的代码是不同的,但是当dra9

消เ息被送给一个匿名的anony摸us的shaທpe时,也会基于该shaທpe的实际类型产生正

确的行为。这相当神奇,因为ฦ就象在前面提到เ的,当jaທva编译器在编译dostuff的代码时,

书签 上一章 目录 下一章 书架s
推荐阅读: 娇妻养成记 穿越之民国旧梦txt下载百度云 最后的生物罗斯特尔之战 幽兰谷风景区要多少钱门票 仙村属于哪里 官途 克劳伍德大陆 众夫盈门晋江 重生之贵门嫡女席婧陆霆宇 豪门隐婚尤物娇妻怀里来?