正在加载图片...
Thinking in Java 3 Editio 都是 Shape,至于更具体的,就不得而知了(编译器也一样)。但是一旦 程序运行,当你遍历数组,逐个地调用它们的draw()方法的时候,你 就会发现,draw()的行为魔法般地变成了各个具体类型的正确行为 之所以要随机选择形状,是想做得道地一点,让你相信编译器在编译的时 候也不知道该选用哪个方法。所有的draw()都必须使用后绑定。 可扩展性 现在,我们再回到乐器的例子。由于有了多态性,你就可以根据需要,往 系统里添加任意多个新类型,而不用担心还要修改tune()方法了。在 个设计良好的OOP程序中,绝大多数方法都会和tune()一样,只跟基 类接口打交道。这种程序是可扩展的,因为你可以通过“让新的数据类型 继承通用的基类”的方法,来添加新的功能。而那些与基类接口打交道的 方法,根本不需要作修改就能适应新的类。 就拿乐器为例,想想该怎样往基类里加新的方法,并且通过继承产生一些 新的类。下面就是关系图 Instrument void play o String what void adjust Wind Percussion Stringed void play o void playo void play o String what String what string whati〕 void adjust void adjust void adjust Woodwind Brass string what void adjust 第9页共29页 www.wgqqh.com/shhgs/tij.html emailshhgsasohu.comThinking in Java 3rd Edition 第 9 页 共 29 页 www.wgqqh.com/shhgs/tij.html email:shhgs@sohu.com 都是 Shape,至于更具体的,就不得而知了(编译器也一样)。但是一旦 程序运行,当你遍历数组,逐个地调用它们的 draw( )方法的时候,你 就会发现, draw( )的行为魔法般地变成了各个具体类型的正确行为 了。 之所以要随机选择形状,是想做得道地一点,让你相信编译器在编译的时 候也不知道该选用哪个方法。所有的 draw( )都必须使用后绑定。 可扩展性 现在,我们再回到乐器的例子。由于有了多态性,你就可以根据需要,往 系统里添加任意多个新类型,而不用担心还要修改 tune( )方法了。在一 个设计良好的 OOP 程序中,绝大多数方法都会和 tune( )一样,只跟基 类接口打交道。这种程序是可扩展的,因为你可以通过“让新的数据类型 继承通用的基类”的方法,来添加新的功能。而那些与基类接口打交道的 方法,根本不需要作修改就能适应新的类。 就拿乐器为例,想想该怎样往基类里加新的方法,并且通过继承产生一些 新的类。下面就是关系图:
<<向上翻页向下翻页>>
©2008-现在 cucdc.com 高等教育资讯网 版权所有