当前位置:懂科普 >

IT科技

> java clone()

java clone()

<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://dongkepu.com/itkeji/z3kqll.html