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

下载本文档

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

文档简介

1、.1演讲人:胡望平 制 作:第五组 .2一、简介Object类 Object类是类层次的根。所有类都直接地继承Object类,所以一个Object类型的变量可以引用任何对象,不论是类实例还是数组。 如果在类的声明中未使用extends关键字指明其基类,则默认基类为Object类。 Object类定义了一系列可供所有对象继承的方法。这些方法分为两类:通用工具方法和支持线程的方法。.3通用工具方法: public boolean equals(Object obj) public int hashCode() public String toString() protected Object cl

2、one() .41、public boolean equals(Object obj) 比较接受对象和obj引用对象的等同性,如果他们的值相同则返回true,否则返回false。equals方法与值的等同性有关。Object中equals的默认实现假定对象只等于它自己,可通过if this=obj进行测试。equals方法的特性:1、if x!=null&x.equals(x) then true2、if x.equals(y) true;then y.equals(x) true.3、if x.equals(y)&y.equals(z) true;x.equals(z) tr

3、ue.4、if x!=null &x.equals(null) then false5、一致性.5为什么要重写equals方法 1、基本类型用“” 2、引用类型与null比用“” 3、引用类型之间的比较用equals。 Object类中的equals方法判断的其 实还是地址。因此,判断两个对象值时须要重写.6理解与思考 x.equals(y),当当x和和y所引用的对象是同一所引用的对象是同一类对象且内容相等时(并不一定是相同对类对象且内容相等时(并不一定是相同对象)象)返回true,否则返回false./home/soft01/Desktop/未命名文件夹/幻灯片129.JPG/hom

4、e/soft01/Desktop/经典案例/幻灯片129.JPG/home/soft01/Desktop/经典案例/幻灯片129.JPG.7例如: Override public boolean equals(Object obj) if(obj=null) return false; else if(obj instanceof Student) Student st=(Student)obj; return st.id=this.id; /return .equals(name); /调string类中的equals()比较 /类型id 决定equals() return f

5、alse; /重点掌握与熟练.82、public int hashCode() 返回对象的散列码。每个对象都有一个用于散列表的散列码。散列码是由对象导出的一个整型值。散列码是没有规律的。如果x和y是两个不同的对象,x.hashCode()与y.hashCode()基本上不会相同。由于hashCode方法定义在Object类中,因此每个对象都有一个默认的散列码,其值为对象的存储地址。如果重新定义equals方法,就必须重新定义hashCode方法,以便用户可以将对象插入到散列表中。功能:使相等对象拥有相同的哈希码 尽量让不等的对象具有不同的哈希码。.9例如: public int hashCod

6、e() /按照Hashcode约定,与equals()相关 int type=41; /素数可以改变 /return type*43+id; return type*43+name.hashCode(); .103、public String toString() 返回对象的字符串表示。以便用户能够获得一些有关对象状态的基本信息 简单说就是利用字符串来表示对象。 toString方法的object版本构造了一个字符串,包含该对象的类名、一个字符和实例散列码的十六进制表示。.11toString的调用方式 System.out.print/ln() 打印一个对象其 实就是打印这个对象 toStr

7、ing 方法的返回值。自动调用 “”连接字符串时,自动调用该对象类的toString()方法:如 System.out.println(“info”+Person); 对象.toString();.12例如: public String toString() return getClass().getName() + + Integer.toHexString(hashCode() /建议所有的类都重写toString()方法 这是Object类的toString方法。.133、protected Object clone() 返回对象的一个克隆体。克隆体就是调用clone方法的对象的一个拷贝

8、。 clone方法将返回一个新的对象,它的初始状态与调用的clone方法的对象完全相同。对新克隆对象的修改不会影响原对象的状态。即x.clone()!=x;.14编写clone方法的三个考虑 1、必须实现Cloneable接口。(注意:Cloneable接口的出现与接口的正常使用没有任何关系,在这,接口只是作为标记(没有方法),它并没有指定clone方法。) 2、通过Object 类实现的clone方法,它通过把原对象的所有域拷贝到新对象中以完成简单的克隆。(注:子类只能调用受保护的clone方法克隆它自己,为此,必须重新定义clone方法,并将它声明为public,这样才能够让所有的方法克隆

9、对象。) 3、CloneNotSupportedException异常用于告知类的clone方法不应该调用.15创建可克隆类的最简单方式是声明它实现Cloneable接口,然后再将clone方法重新声明为public,例如: public MyClass extends Class implements Cloneable public Object clone() throws CloneNotSupportedException return super.clone(); /. .16简介两种克隆 1、浅克隆:被复制对象的所有对象都含有与原来的对象相同的值,而所有的对其他对象的引用仍然指向原来

温馨提示

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

评论

0/150

提交评论