java中的cloneable接口重写clone()方法
时间: 2024-04-24 20:23:40 浏览: 172
在Java中,如果一个类想要实现克隆功能,需要实现Cloneable接口并重写clone()方法。Cloneable接口是一个标记接口,没有任何方法需要实现,但它的存在告诉编译器这个类可以被克隆。
下面是一个示例代码,展示了如何在一个类中实现克隆功能:
```java
public class MyClass implements Cloneable {
private int number;
public MyClass(int number) {
this.number = number;
}
public int getNumber() {
return number;
}
@Override
public Object clone() throws CloneNotSupportedException {
return super.clone();
}
}
```
在这个示例中,MyClass类实现了Cloneable接口,并且重写了clone()方法。在clone()方法中,我们调用了父类的clone()方法来完成对象的浅拷贝。
要注意的是,clone()方法返回的是Object类型,需要进行类型转换才能得到具体的对象。
使用这个类进行克隆操作的示例代码如下:
```java
public class Main {
public static void main(String[] args) {
MyClass obj1 = new MyClass(10);
try {
MyClass obj2 = (MyClass) obj1.clone();
System.out.println(obj2.getNumber()); // 输出 10
} catch (CloneNotSupportedException e) {
e.printStackTrace();
}
}
}
```
在这个示例中,我们创建了一个MyClass对象obj1,并通过调用clone()方法创建了一个新的克隆对象obj2。最后打印出obj2的number属性,结果应该和obj1的number属性相同。
需要注意的是,这里的克隆是浅拷贝,即对象的引用属性不会被复制,而是仍然指向原始对象。如果需要实现深拷贝,即对象的所有属性都被复制一份,可以在clone()方法中进行相应的处理。
阅读全文