當前位置:生活全書館 >

IT科技

> clone() java

clone() java

<link rel="stylesheet" href="https://js.how234.com/third-party/SyntaxHighlighter/shCoreDefault.css" type="text/css" /><script type="text/javascript" src="https://js.how234.com/third-party/SyntaxHighlighter/shCore.js"></script><script type="text/javascript"> SyntaxHighlighter.all(); </script>

java clone()是什麼,讓我們一起了解一下?

clone()屬於clone中的一種,有淺克隆和深克隆。在Java中,clone方法被物件呼叫,所以會複製物件,所謂的複製物件,首先要分配一個和源物件同樣大小的空間,在這個空間中建立一個新的物件。

要想了解clone(),首先要知道clone方法是什麼?

clone方法是返回與當前物件的一個副本物件,可以通過操作副本物件而不影響當前物件。使用clone方法需要實現Cloneable介面,並重寫Object方法中的clone方法。

需要注意的是在clone在Object中是project修飾符。因為所有類都是Object的子類,所以如果不實現clone方法,在類中可以直接使用父類的clone方法,但是其物件在別的類中不能呼叫clone方法。所以必須重寫clone方法。

java clone()

那clone()在java應用中扮演者什麼角色?(以淺克隆為例)

1、被複制的類需要實現Clonenable介面(不實現的話在呼叫clone方法會丟擲CloneNotSupportedException異常), 該介面為標記介面(不含任何方法)。

2、覆蓋clone()方法,訪問修飾符設為public。方法中呼叫super.clone()方法得到需要的複製物件。

具體操作程式碼如下:

class Student implements Cloneable{      private int number;        public int getNumber() {          return number;      }        public void setNumber(int number) {          this.number = number;      }            @Override      public Object clone() {          Student stu = null;          try{              stu = (Student)super.clone();          }catch(CloneNotSupportedException e) {              e.printStackTrace();          }          return stu;      }  }  public class Test {      public static void main(String args[]) {          Student stu1 = new Student();          stu1.setNumber(12345);          Student stu2 = (Student)stu1.clone();                    System.out.println("學生1:" + stu1.getNumber());          System.out.println("學生2:" + stu2.getNumber());                    stu2.setNumber(54321);                System.out.println("學生1:" + stu1.getNumber());          System.out.println("學生2:" + stu2.getNumber());      }  }

輸出結果:

學生1:12345  學生2:12345  學生1:12345  學生2:54321

標籤: java clone
  • 文章版權屬於文章作者所有,轉載請註明 https://shqsg.com/dianzi/8x29qq.html