您所在的位置: 首页>>读书频道>>设计开发>>Java系列>>

终极对象有什么

http://book.51cto.com  2008-07-25 10:36  [美]塞若(Sierra,K.)/贝茨(Bates,B.)  中国电力出版社  我要评论(0)

终极对象有什么?

如果你是Java,那你会想要让每个对象都带有什么行为?嗯……来个可以判断某对象是否与其他对象相等的方法如何?再加上一个可以说明它是什么类的方法怎样?或许还会需要一个产生对象哈希代码的方法?你可以运用哈希表上的对象(我们会在第17章和附录B中讨论哈希表)。

你知道怎样吗?对象的确有上面所说的方法。那还不是全部的方法,但目前我们只关心这几个。 

  

 

  

问:Object这个类是抽象的吗?

答:不是。至少不是正式的 Java 抽象类。因为它可以被所有类继承下来的方法都实现程序代码,所以没有必须被覆盖过的方法。

问:那是否可以覆盖过Object的方法?

答:部分可以。但是有些被标记为final,这代表你不能覆盖掉它们。强烈建议你用自己写的类去覆盖掉hastCode()、equals()以及toString()。

问:如果ArrayList方法是通用的,那ArrayListA<DotCom>是什么意思?

答:限制它的类型。在Java 5.0之前无法限制它的类型。如果你写成ArrayList<Dog>,则此ArrayList受限只能保存Dog的对象。这种新型的语法会在后面的章节有更多的说明。

问: Ob j e c t 类是具体的。怎么会允许有人去创建Object的对象呢?这不就跟Animal对象一样不合理吗?

答:好问题!为何要允许创建出Object的实例呢?因为有时候你就是会需要一个通用的对象,一个轻量化的对象。它最常见的用途是用在线程的同步化上面(见第15章)。你先当作不会用到这个对象。

问:所以Object的主要目的是提供多态的参数与返回类型吗?

答:这个Object类有两个主要的目的:作为多态让方法可以应付多种类型的机制,以及提供Java在执行期对任何对象都有需要的方法的实现程序代码(让所有的类都会继承到)。有一部分的方法是与线程有关,这会在后面的章节说明。

问:即然多态类型这么有用,为什么不把所有的参数和返回类型都设定成Object类型哪?

答: 啊… … 想想看这会发生什么后果。考虑一下何谓“ 类型安全检查” 。它是Java保护程序代码的一项重要机制。在此机制下,你不会意外地要求对象执行错误类型的动作。例如说防止你对Cefiro要求Ferrai的加速动作。

但事实上,你也不用担心会发生这件事,因为当某个对象是以Object类型来引用时,Java会把它当作Object类型的实例。这代表你只能调用由Object类中所声明的方法。若你像下面这样做:Object o = new Ferrai( );o.goFast( );//非法则第二行会无法通过编译。

因为Java是类型检查很强的程序语言,编译器会检查你调用的是否是该对象确实可以响应的方法。换句话说,你只能从确实有该方法的类去调用。同样,这也会在后面的章节说明。

【责任编辑:夏书 TEL:(010)68476606】

回书目   上一节   下一节
Java实用开发全集
Java类的基础教程专题
Java发展动态专题
Java编程开发手册
Java基础教程
 
 验证码: (点击刷新验证码)   匿名发表
  • Visual C++ 完全自学宝典

  • 作者:强锋科技,朱洪波
  • Visual C++ 6.0是微软公司为程序人员提供的Visual Studio 6.0工具套件中的重要组成部分。本书由浅入深地介绍使用Visual C++ 6.0..
Copyright©2005-2008 51CTO.COM 版权所有