Java培训笔记十九(Object类的介绍)

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()进行重写

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值