当前位置:  技术问答>java相关

对think in java中的问题

    来源: 互联网  发布时间:2015-08-31

    本文导语:  刚刚开始看,在下面的话中有点不明白: 若通过继承增添了一种新类型,如“三角形”,那么我们为“几何形状”新类型编写的代码会象在旧类型里一样良好地工作。所以说程序具备了“扩展能力”,具有“扩展性...

刚刚开始看,在下面的话中有点不明白:
若通过继承增添了一种新类型,如“三角形”,那么我们为“几何形状”新类型编写的代码会象在旧类型里一样良好地工作。所以说程序具备了“扩展能力”,具有“扩展性”。
以上面的例子为基础,假设我们用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也能接收。

问,如上面提到的,shape和Circle、Triangle、Line这些是否需要建立程序上的逻辑关联,才能使doStuff产生反应?是否这种逻辑关联是程序系统自己认识,并不需要我去重新建立这种逻辑关联? 

那如果程序系统已经设置了他们之间的逻辑关联的话,是否也就是说如果在常理上,两个事物是一种包含或继承的关系,都可以不用我在程序中另外设置他们之间的逻辑关联?如一个简单的例子车、船、飞机等是属于交通工具中的,那我在开始的程序中是否可以这样设置:void doStuff(vehicle s) {……};并在后面的程序代码中可以这样写
Circle c = new Car();
Triangle b = new Boat();
Line p = new Plane ();
doStuff(c);
doStuff(b);
doStuff(p);
这样doSutff()这个函数也能同所有的vehicle通信?

|
这应该是继承中讲的吧?
实际上,可以这么说这个问题:可以把子类对象的句柄赋给超类的句柄变量。也就是说,可以用超类的句柄来引用一个子类的对象,但只能访问超类定义的那部分对象。
如果你后面说的Car、Boat、Plane等都是继承(extends)于超类vehicle的话,那么是可以像你那么用的。
是不是我越说越糊涂了?:)

|
的确是这样。

|
只要你这些交通工具extends vehicle就一切ok了

    
 
 

您可能感兴趣的文章:

  • Thinking In Java 的第一个程序问题
  • THINK IN JAVA版本问题!
  • 我在Thinking in Java中遇到的Jni问题!
  • Think in java 问题。(请教)
  • 关于<<thinking in java>>中的源代码执行的问题
  • 请看过《thinking in java 2nd〉的高手回答一个小问题。
  • 小小问题,关于Thinking In Java 中一句话的含义
  • 关于Thinking in java这本书中的问题!高手进来!
  • <thinking in java>中的一个小问题。
  • 学习<Think in Java>第2章的问题,欢迎大家讨论。
  • 一个JAVA继承的问题(Thinking in JAVA里的一个例子)
  • 关于thinking in java 中的一个例子的问题(BangBean) 其中的JPanel怎么回事?
  • think in java 里的一个例子运行的问题
  • <Thinking in Java>的例子,运行出问题,帮我看看是什么问题...
  • 小弟问个问题:我看了THINKING IN JAVA一多半啦(一个月),可还是做不出什么东西啊!大哥大姐们帮我想个东东,我试着做做啊!最好能说详细点啊!分不够再加啊!
  • 请教一个"thinking in java "(第一版)333页上,Snake克隆的例子的问题。请看过的人,解惑。谢谢
  • Think in Patterns问题求解一,设计模式达人入
  • 大家对thinking in java 2有没有什么感悟啊??今天看内隐类的时候遇到了大问题!
  • 早上看到China-Pub已经有<Thinking In C++>英文第2版卖了,而且<Thinking In Java 2E>也在预告了,强烈期待中......
  • 我想学JAVA ,是买THINK IN JAVA 还是JAVA2核心技术:卷1 好???
  • 请大家评价一下Thinking in Java第二版(中文)这本书如何,是否适合JAVA初学者?
  • 哪里还有Think in java!答者给分,谢谢
  • 网络技术 iis7站长之家
  • 看完了core java1和thinking in java,看什么?
  • Think in Java
  • 高分征集Think in java(第2版)中文电子版
  • 考SCJP275一定要看<Thinking In Java>吗?
  • 我学java,已经看了《thinking in java》,编了一些程序,现在该看什么书呢?大家推荐一下
  • 从哪能下载Thinking in java 一书中的程序代码?
  • THINKING IN JAVA 第二版(中文)(经典之作品出版了)
  • 菜鸟问JAVA高手,对thinking in Java!有何心得!
  •  
    本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
    本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • 有人能提供THINK IN JAVA 第二版的简体中文下载吗?
  • 关于Think in Java一书
  • Think第二版发布了!(本人开发的C语言跨平台开发库)
  • thinking in java se基本看完了,想搞jsp,请推荐经典书
  • 我记得有位大哥发给我一份中文版的think in java,能不能重发一次,谢谢!
  • 看了《Think in jave》后,该看什么书呀,
  • 谁那有《Thinking in Java》的英文版(或哪有下载)GIVE ME啊!
  • 谁有《thinking in java》中的程序代码?重重有赏
  • 长沙哪里买到 thinking in java ?
  • where is thinking in java to download??
  • win98下可以运行那些jsp server???thinks
  • java in thinking 第一版翻译的真的不能读么?
  • 哪里有THINK IN JAVA 下载呀?(中文的)
  • 请问到哪儿能下载think in java.的电子版。
  • 各位高手,那有think in java 的电子书下载
  • 关于《Thinking in Java》
  • 哪有Think In Java的中文版和关于Corba的书下载?
  • 哪有thinking in java 的英文版下载?
  • 真想不通 Thinking in java 干嘛要出第三版
  • 各位,能否告诉小弟那里有《thinking in java》可以下载啊!thx


  • 站内导航:


    特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

    ©2012-2021,,E-mail:www_#163.com(请将#改为@)

    浙ICP备11055608号-3