Object类及其方法_第1页
Object类及其方法_第2页
Object类及其方法_第3页
Object类及其方法_第4页
Object类及其方法_第5页
已阅读5页,还剩11页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

Object类及其方法 演讲人 胡望平制作 第五组 一 简介Object类 Object类是类层次的根 所有类都直接地继承Object类 所以一个Object类型的变量可以引用任何对象 不论是类实例还是数组 如果在类的声明中未使用extends关键字指明其基类 则默认基类为Object类 Object类定义了一系列可供所有对象继承的方法 这些方法分为两类 通用工具方法和支持线程的方法 通用工具方法 publicbooleanequals Objectobj publicinthashCode publicStringtoString protectedObjectclone 1 publicbooleanequals Objectobj 比较接受对象和obj引用对象的等同性 如果他们的值相同则返回true 否则返回false equals方法与值的等同性有关 Object中equals的默认实现假定对象只等于它自己 可通过ifthis obj进行测试 equals方法的特性 1 ifx nullx equals z true 4 ifx null x equals null thenfalse5 一致性 为什么要重写equals方法 1 基本类型用 2 引用类型与null比用 3 引用类型之间的比较用equals Object类中的equals方法判断的其实还是地址 因此 判断两个对象值时须要重写 理解与思考 x equals y 当x和y所引用的对象是同一类对象且内容相等时 并不一定是相同对象 返回true 否则返回false home soft01 Desktop 未命名文件夹 幻灯片129 JPG home soft01 Desktop 经典案例 幻灯片129 JPG home soft01 Desktop 经典案例 幻灯片129 JPG 例如 Overridepublicbooleanequals Objectobj if obj null returnfalse elseif objinstanceofStudent Studentst Student obj returnst id this id returnst name equals name 调string类中的equals 比较 类型 id决定equals returnfalse 重点掌握与熟练 2 publicinthashCode 返回对象的散列码 每个对象都有一个用于散列表的散列码 散列码是由对象导出的一个整型值 散列码是没有规律的 如果x和y是两个不同的对象 x hashCode 与y hashCode 基本上不会相同 由于hashCode方法定义在Object类中 因此每个对象都有一个默认的散列码 其值为对象的存储地址 如果重新定义equals方法 就必须重新定义hashCode方法 以便用户可以将对象插入到散列表中 功能 使相等对象拥有相同的哈希码尽量让不等的对象具有不同的哈希码 例如 publicinthashCode 按照Hashcode约定 与equals 相关inttype 41 素数可以改变 returntype 43 id returntype 43 name hashCode 3 publicStringtoString 返回对象的字符串表示 以便用户能够获得一些有关对象状态的基本信息简单说就是利用字符串来表示对象 toString方法的object版本构造了一个字符串 包含该对象的类名 一个 字符和实例散列码的十六进制表示 toString的调用方式 System out print ln 打印一个对象其实就是打印这个对象toString方法的返回值 自动调用 连接字符串时 自动调用该对象类的toString 方法 如System out println info Person 对象 toString 例如 publicStringtoString returngetClass getName Integer toHexString hashCode 建议所有的类都重写toString 方法这是Object类的toString方法 3 protectedObjectclone 返回对象的一个克隆体 克隆体就是调用clone方法的对象的一个拷贝 clone方法将返回一个新的对象 它的初始状态与调用的clone方法的对象完全相同 对新克隆对象的修改不会影响原对象的状态 即x clone x 编写clone方法的三个考虑 1 必须实现Cloneable接口 注意 Cloneable接口的出现与接口的正常使用没有任何关系 在这 接口只是作为标记 没有方法 它并没有指定clone方法 2 通过Object类实现的clone方法 它通过把原对象的所有域拷贝到新对象中以完成简单的克隆 注 子类只能调用受保护的clone方法克隆它自己 为此 必须重新定义clone方法 并将它声明为public 这样才能够让所有的方法克隆对象 3 CloneNotSupportedException异常用于告知类的clone方法不应该调用 创建可克隆类的最简单方式是声明它实现Cloneable接口 然后再将clone方法重新声明为public 例如 publicMyClassextendsClassimplementsCloneable publicObjectclone throwsCloneNotSupportedException returnsuper clone 简介两种克隆 1 浅克隆 被复制对象的所有对象都含有与原来的对象相同的值 而所有的对其他对象的引用仍然指向原来的对象 换言之 浅复制仅仅复制

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论