Java面向對象(OOP)概念
Java面向對象(OOP)概念
Java命名約定
Java對象和類
Java構造器(構造方法)
Java static關鍵字
Java this關鍵字
Java繼承
Java聚合
Java方法重載
Java方法重寫
Java super關鍵字
Java實例初始化程序塊
Java final關鍵字
Java多態
Java靜態綁定和動態綁定
Java instanceof運算符
Java抽象類
Java接口
Java抽象類和接口的區別
Java包
Java訪問修飾符
Java封裝
Java Object類
Java對象克隆
Java數組
Java包裝類
Java按值調用和引用調用
Java strictfp關鍵字
Java命令行參數
對象和類之間的區別
java中方法重載和方法重寫的區別
Java對象克隆
對象克隆是一種創建對象的精確副本的方法。 Object
類的clone()
方法用於克隆對象。java.lang.Cloneable
接口必須由我們要創建其對象克隆的類實現。如果我們不實現Cloneable
接口,clone()
方法生成CloneNotSupportedException
。
clone()
方法在Object
類中定義。 clone()
方法的語法如下:
protected Object clone() throws CloneNotSupportedException
爲什麼要使用clone()方法?
clone()
方法保存用於創建對象的精確副本的額外處理任務。 如果我們使用new
關鍵字執行它,它將需要執行大量的處理,這就是爲什麼我們使用對象克隆。
對象克隆的優點
- 少處理任務。
clone()方法示例(對象克隆)
讓我們來看看對象克隆的簡單例子
class Student18 implements Cloneable {
int rollno;
String name;
Student18(int rollno, String name) {
this.rollno = rollno;
this.name = name;
}
public Object clone() throws CloneNotSupportedException {
return super.clone();
}
public static void main(String args[]) {
try {
Student18 s1 = new Student18(101, "amit");
Student18 s2 = (Student18) s1.clone();
System.out.println(s1.rollno + " " + s1.name);
System.out.println(s2.rollno + " " + s2.name);
} catch (CloneNotSupportedException c) {
}
}
}
執行上面代碼,得到如下結果 -
101 amit
101 amit
從上面的例子可以看出,兩個引用變量都有相同的值。 因此,clone()
將對象的值複製到另一個對象。 因此,在實際應用中我們不需要編寫顯式代碼將對象的值複製到另一個對象。
如果通過new
關鍵字創建另一個對象並將另一個對象的值賦給這個對象,則需要對該對象進行大量處理。 所以爲了節省額外的處理任務,我們使用clone()
方法。