Java Object類

參考資料

[1]. 瘋狂Java講義(第三版) 李剛

Object類

Object類是所有類、數組、枚舉類的父類,也就是說,Java允許把任何類型的對象賦給Object類型的變量。當定義一個類時沒有使用extends關鍵字爲它顯示指定父類,則該類默認繼承Object父類。

自定義clone

Java還提供了一個protected修飾的clone()方法,該方法用於幫助其他對象來實現“自我克隆”,所謂“自我克隆”,就是得到一個當前對象的副本,而且兩者之間完全隔離。由於Object類提供了clone()方法使用了protected修飾,因此該方法只能被子類重寫或調用。
自定義類實現“克隆”的步驟如下:
1. 自定義類實現Cloneable接口,這是一個標記性接口,實現該接口的對象可以實現“自我克隆”,接口裏沒有定義任何方法。
2. 自定義類實現自己的clone()方法。
3. 實現clone()方法時通過super.clone();,調用Object實現的clone()方法來得到該對象的副本,並返回該副本。

class Address
{
    String detail;
    public Address(String detail)
    {
        this.detail = detail;
    }
}
// 實現Cloneable接口
class User implements Cloneable
{
    int age;
    Address address;
    public User(int age)
    {
        this.age = age;
        address = new Address("廣州天河");
    }
    // 通過調用super.clone()來實現clone()方法
    public User clone()
        throws CloneNotSupportedException
    {
        return (User)super.clone();
    }
}
public class CloneTest
{
    public static void main(String[] args)
        throws CloneNotSupportedException
    {
        User u1 = new User(29);
        // clone得到u1對象的副本。
        User u2 = u1.clone();
        // 判斷u1、u2是否相同
        System.out.println(u1 == u2);      //①
        // 判斷u1、u2的address是否相同
        // address來自一個引用地址,所以相等
        System.out.println(u1.address == u2.address);     //②
    }
}
發佈了91 篇原創文章 · 獲贊 23 · 訪問量 12萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章