Object类位于:java.lang
Object类是所有类的根类,每个类都使用 Object 作为超类.其中提供了一些列对对象进行操作的方法
Object类中常用的方法:
(1) clone() 创建并返回此对象的一个副本 注意:Object类型的对象本身是无法访问clone()方法对其进行克隆的(参见:cn.com.object)。 它只能适用于继承了Object的子类对象 使用步骤: 1)定义一个继承了Object的子类类型,同时实现Cloneable接口; 作为Cloneable接口本身不包含clone()方法,该接口只是用于标识实现类可克隆 2)在子类中对Object父类中的clone()方法进行重写,以指定特定的克隆执行过程 克隆分类: 1)浅度克隆 (参见:cn.com.shallow.clone) 发生情况:如果被克隆对象所属类中包含基本类型或引用类型的属性,而在进行克隆 的时候只对包含基本类型或引用类型属性的外层对象进行克隆。对于其 内部包含的引用类型予以忽略的时候 执行效果:(1)外围被克隆的对象,会参照它产生一个独立的副本。副本中的引用类型的 属性与原对象采用复制方式,指向同一个堆空间 (2)对其中任何一个对象中的引用属性中的属性进行修改,都会影响到另一个 对象 2)深度克隆 (参见:cn.com.deep.clone) 发生情况:如果被克隆对象所属类中包含基本类型或引用类型的属性,而在进行克隆的时候 不仅对包含基本类型的或引用类型属性的外层对象进行克隆,还要对被包含的内层 引用类型的对象也进行克隆 执行效果:(1)外围被克隆的对象,会参照它产生一个独立的副本。同时,对其所包含的内层 对象也产生一独立的副本,指向一个新的堆空间 (2)对其中任何一个对象中的引用属性中的属性进行修改,都不会影响到另一个 对象 注意: (1)在进行深度克隆的时候,被包含的引用类型的属性所属的类,都要实现Cloneable接口, 并且要重写Object类中的clone()方法 (2)在外层对象执行克隆的基础上,利用外层对象克隆后的新对象,对新外层对象中的引用属性 进行克隆,并将克隆后产生的新对象赋给,外层对象的副本中的引用 (2)equals(Object obj) 比较两个对象是否相等 注意:(1)Object类中的equals()底层实现如下: this == obj 比较的是调用eqauls()的对象与以参数形式传递进去的obj对象,两者的引用地址是否相等 如果引用地址相等,返回true;否则,返回false (参见:cn.com.object.method.equals.ObjectEquals.java) (2) 如果想要在某个Object子类中自定义一种比较方式,那么,需要对Object中的equals() 进行重写 (3) 如果Object子类没有显示的重写Object中的eqauls方法,则在使用equals方法的时候 执行的是Object类中的equals()默认的执行过程 (3)getClass() 获取对象所属的具体类型信息 (参见:cn.com.object.method.getClass) 使用情况:在继承或实现关系中,将某个子类对象上传为其父类或接口类型,而在后期的操作过程中, 需要获取被向上转型为父类或接口类型的对象,所属的具体的类型信息 (4)toString() 将一个对象转换为字符串形式 (参见:cn.com.object.method.getClass中的Student;Teacher;School类) 注意: (1) Object类中的toString(),顶层是借助于Object类中的getClass()和hashCode()方法组合出一个字符串, 表示对象的引用地址 (2) toString()在使用System.out.println/pirint()语句输出的时候,会隐式的自动调用其toString()方法 (3) 对于自定义类,要在输出对象本身的时候,能有效地输出该对象内属性值信息,或以特定格式输出,那么,需要对 Object类中的toString()进行重写