类的祖先Object类
课程    Java核心技术

Java所有的类都继承于Objec类,此类是所有Java类的父类,如果在类的声明中未使用extends关键字指定父类,则默认继承Object类,任何继承Object的类,都可以调用Object类的方法。

Object类在java.lang包中有如下几个实用的方法。

String  toStirng()方法

用于返回当前对象的有关信息,返回类型为String类型。其作用是当需要对外输出对象信息时,这个对象自动调用toString()方法,通过这个方法返回一个表示对象自身信息的字符串,对象信息默认的内容是“类名称+哈希编码”。如果需要输出自己定义的类信息,则需要重写toStirng()方法,类方法的重写机制在后面的多态内容部分会讲到。

例如:

public class FruitManager {
    public static void main(String[] args) {
        // TODO Auto-generated method stub
        //声明和创建Fruits对象apple
        Fruits  apple  =  new  Fruits("80%","60%","30%");
        //输出Fruits类的信息
        System.out.println("Fruits类的信息" + apple.toString());
        //调用appleshowFruit方法输出对象属性
        apple.showFruit();
    }
}

案例代码见PCoreUnit1项目fruits包的Fruits类和FruitManager类。

在FruitManager类main方法中,创建apple对象后,输出apple对象的自身信息和对象属性。执行FruitManager,输出结果如下图所示:

image.png

FruitManager输出结果

 

boolean  equals(Object obj) 方法

Object类的equals方法主要用于判断传入的对象obj与自身是否一致,即判断自身与obj是否是同一个对象。equals默认的判断方法是判断两个对象的内存地址是否一致,如果一致则返回true,否则返回false。在实际编程中,有时需要判断两个对象的内容是否相等,此时就需要重写Object类的equals方法,替换掉默认的判断方法。

例如:

public class Fruits {
    //汁液含量
    private String  water;
    //糖分含量
    private String  sugar;
    //芳香度
    private  String  fragrance;
   
    Fruits(String inwater,String sugar,String fragrance)
    {
        this.water = inwater;
        this.sugar = sugar;
        this.fragrance = fragrance;
    }
   
    // 重写equal方法
    @Override
    public boolean equals(Object obj) {
        boolean bEquals = true;
        Fruits  tempFruits = (Fruits)obj;
        if( !this.water.equals(tempFruits.getWater()) )
         bEquals = false;
        if( !this.sugar.equals(tempFruits.getSugar()) )
         bEquals = false;
        if( !this.fragrance.equals(tempFruits.getFragrance()) )
         bEquals = false;
        return bEquals;
    }
   
    /**
     * Function  showFruit
     * Description: 输出水果的 水分含量、糖分含量、芳香度
     * input: 无输入参数
     * return: 无返回
     */
    public void  showFruit()
    {
        System.out.println("水分含量:" + getWater());
        System.out.println("糖分含量:" + getSugar());
        System.out.println("芳香度:" + getFragrance());
    }
   
    public String getWater() {
        return water;
    }
    public void setWater(String water) {
        this.water = water;
    }
    public String getSugar() {
        return sugar;
    }
    public void setSugar(String sugar) {
        this.sugar = sugar;
    }
    public String getFragrance() {
        return fragrance;
    }
    public void setFragrance(String fragrance) {
        this.fragrance = fragrance;
    }
 
}

案例代码见PCoreUnit1项目fruits包的Fruits类。

Fruits类重写了Object类的equals方法,替换默认的equals方法,用于判断两个对象内容是否相等,而不是内存地址是否相等。

Object  clone()方法

Object类的clone方法主要用于快速创建一个已有对象的副本,将原有对象的数据导入到新创建的对象中。

使用clone方法注意事项:

(1)为了使用clone方法,类必须实现java.lang.Cloneable接口重写protected方法clone,如果没有实现Clonebale接口会抛出CloneNotSupportedException。

(2)clone方法创建新对象后,将原对象的内容拷贝复制到新对象中。假如原对象属性包含引用类型,那么原始对象和新创建的对象都将指向相同的引用内容,这点需特别注意,因为引用类型数据的任何改变将反应到他们所引用的共同内容上,这将会产生不可预知的结果。

Object 是类层次结构的根类,每个类都使用 Object 作为超类,所有Java类都继承Object类,一般的类都需要覆盖Object中的三个方法:toString(),hashCode()和equals()方法。

读者留言
最新
推荐
用手机学习课程

手机、电脑同步学

用浏览器扫描二维码,即可下载APP。

郎宏林
授课老师
授课老师简介
项目经理,系统分析和架构师,从事多年中文信息处理技术。熟悉项目管理、擅长项目需求分析和设计、精通Java、C#、Python等编程语言。
  • 备案号:鲁ICP备15001146号
  • @1997-2018 潍坊米粒花网络技术有限公司版权所有