java基礎學習 轉殖

2021-06-26 21:59:47 字數 2026 閱讀 9704

被複製物件的所有變數都含有與原來的物件相同的值,而所有的對其他物件的引用仍然指向原來的物件。換言之,淺複製僅僅複製所考慮的物件,而不複製它所引用的物件。

被複製物件的所有變數都含有與原來的物件相同的值,除去那些引用其他物件的變數。那些引用其他物件的變數將指向被複製過的新物件,而不再是原有的那些被引用的物件。換言之,深複製把要複製的物件所引用的物件都複製了一遍(遞迴下去)。

clone方法將物件複製了乙份並返回給呼叫者。

一般而言,clone()方法滿足:

1)對任何的物件x,都有x.clone() !=x

轉殖物件與原物件不是同乙個物件

2)對任何的物件x,都有x.clone().getclass()= =x.getclass()

轉殖物件與原物件的型別一樣

3)如果物件x的equals()方法定義恰當,那麼x.clone().equals(x)應該成立。

實現:1)為了獲取物件的乙份拷貝,我們可以利用object類的clone()方法。

2)在派生類中覆蓋基類的clone()方法,並宣告為public(object類中的clone()方法為protected的)

3)在派生類的clone()方法中,呼叫super.clone()

4)在派生類中實現cloneable介面

public class student implements cloneable 

public book getbook()

public void setbook(book book)

public void setage(int age)

public string getname()

public void setname(string name)

@override

public object clone() throws clonenotsupportedexception

}

public class book 

public void setname(string name)

}

public class test 

}

方式一:利用clone方法

public class fruit implements cloneable 

public void setname(string name)

} }@override

public object clone() throws clonenotsupportedexception

}

public string name = "";

public string getname()

public void setname(string name)

@override

public object clone() throws clonenotsupportedexception

}

public class test 

}

方式二:序列化方式

public class people  implements serializable 

public void setname(string name)

public girl getgirl()

public void setgirl(girl girl)

public object deepcopy() throws exception

}

public class girl  implements serializable 

public void setname(string name)

}

public class test 

}

java基礎 轉殖

值傳遞 比如我們的基本資料型別 int char double long byte boolean long short 引用傳遞 除此以為的都是引用傳遞,尤其是我們在建構函式的引數時候 clone 1.拷貝物件返回的是乙個新的物件,而不是乙個對原來物件的引用 2.拷貝物件與用new操作符返回的物件...

Java基礎篇 深轉殖與淺轉殖

轉殖,顧名思義,即是產生乙個與原物件 完全 一樣的乙個新物件。這裡的一樣,或許是表面的一樣,或許是真的一樣。這就牽扯到兩個新定義 淺轉殖與深轉殖。淺轉殖 新物件的基礎型別的變數值與原物件相同,而特殊物件,即非八大基本型別的物件與原物件指向同一記憶體空間,不管新老物件誰對這段空間進行操作都會影響到另乙...

JAVA 物件轉殖clone

有時候我們希望轉殖乙個已存在的物件,並對其進行操作,但是不希望改變原物件,這時使用clone技術就非常方便了。但是使用clone,也有一些需要注意的地方,因為clone有淺層轉殖和深層轉殖。還是習慣先直接上 結合 講解。注 如果你希望某個類具有clone功能,該類必須實現介面cloneable,它是...