当前位置:七道奇文章资讯编程技术Java编程
日期:2011-03-22 16:17:00  来源:本站整理

多形对象的交换操纵[Java编程]

赞助商链接



  本文“多形对象的交换操纵[Java编程]”是由七道奇为您精心收集,来源于网络转载,文章版权归文章作者所有,本站不对其观点以及内容做任何评价,请读者自行判断,以下是其具体内容:

普通,担当终究会以成立一系列类结束,全部类都成立在统一的接口底子上.我们用一幅倒置的树形图来阐明这一点(注释⑤):

⑤:这儿采取了“统一暗号法”,本书将主要采取这种办法.

对这样的一系列类,我们要举行的一项重要处理就是将衍生类的对象当作底子类的一个对象对待.这一点是非常重要的,因为它意味着我们只需编写单一的代码,令其忽视范例的特定细节,只与底子类打交道.这样一来,那些代码便可与范例信息脱离.所以更易编写,也更易理解.此外,若通过担当增添了一种新范例,如“三角形”,那么我们为“多少形状”新范例编写的代码会象在旧范例里一样杰出地工作.所以说程序具有了“扩大本领”,具有“扩大性”.
以上面的例子为底子,假定我们用Java写了这样一个函数:

void doStuff(Shape s) {
  s.erase();
  // ...
  s.draw();
}

这个函数可与任何“多少形状”(Shape)通信,所以完好独立于它要描绘(draw)和删除(erase)的任何特定范例的对象.假如我们在其他一些程序里利用doStuff()函数:

Circle c = new Circle();
Triangle t = new Triangle();
Line l = new Line();
doStuff(c);
doStuff(t);
doStuff(l);

那么对doStuff()的调用会自动杰出地工作,无论对象的具体范例是什么.
这实际是一个非常有效的编程本领.请考虑下面这行代码:
doStuff(c);
此时,一个Circle(圆)句柄传送给一个本来等待Shape(形状)句柄的函数.由于圆是一种多少形状,所以doStuff()能精确地举行处理.也就是说,但凡doStuff()能发给一个Shape的消息,Circle也能接纳.所以这样做是安全的,不会造成错误.
我们将这种把衍生范例当作它的基本范例处理的历程叫作“Upcasting”(上溯造型).此中,“cast”(造型)是指按照一个现成的模子成立;而“Up”(向上)表明担当的方向是从“上面”来的——即底子类位于顶部,而衍生类在下方展开.所以,按照底子类举行造型就是一个从上面担当的历程,即“Upcasting”.
在面向对象的程序里,普通都要用到上溯造型技术.这是避免除调查精确范例的一个好办法.请看看doStuff()里的代码:

s.erase();
// ...
s.draw();

注意它并未这样表达:“假如你是一个Circle,就这样做;假如你是一个Square,就那样做;等等”.若那样编写代码,就需查抄一个Shape全部大概的范例,如圆、矩形等等.这明显是非常麻烦的,并且每次增添了一种新的Shape范例后,都要呼应地举行改正.在这儿,我们只需说:“你是一种多少形状,我知道你能将自己删掉,即erase();请自己采纳那个行动,并自己去掌握全部的细节吧.”
  以上是“多形对象的交换操纵[Java编程]”的内容,如果你对以上该文章内容感兴趣,你可以看看七道奇为您推荐以下文章:
  • 多形对象的交换操纵
  • 本文地址: 与您的QQ/BBS好友分享!
    • 好的评价 如果您觉得此文章好,就请您
        0%(0)
    • 差的评价 如果您觉得此文章差,就请您
        0%(0)

    文章评论评论内容只代表网友观点,与本站立场无关!

       评论摘要(共 0 条,得分 0 分,平均 0 分) 查看完整评论
    Copyright © 2020-2022 www.xiamiku.com. All Rights Reserved .