不要求由父类来实现Cloneable使子类资格克隆。
任何子类都可以简单地实现Cloneable并覆盖克隆方法以符合克隆条件。
package com.pradeep.java.practise.object;
class A{
private String name;
public A() {
System.out.println("===A()===");
}
public A(String name){
System.out.println("===A(-)===");
this.name = name;
}
@Override
public String toString() {
return "A [name=" + name + "]";
}
}
class B extends A implements Cloneable{
private String name;
public B() {
System.out.println("===B()===");
}
public B(String name){
System.out.println("===B(-)===");
this.name = name;
}
@Override
protected Object clone() throws CloneNotSupportedException {
return super.clone();
}
@Override
public String toString() {
return "B [name=" + name + "]";
}
}
public class SubclassCloneTest {
public static void main(String[] args) throws CloneNotSupportedException {
B b = new B("sub class");
B clonedB = (B) b.clone();
System.out.println("original B = "+b);
System.out.println("cloned B = "+clonedB);
}
}
输出:
===A()===
===B(-)===
original B = B [name=sub class]
cloned B = B [name=sub class]
来源
2017-08-04 04:48:09
pdp
每类是'Object',不执行'Cloneable'的子类。 – shmosel
你为什么不尝试看看? –
@Mayank NO,不需要你克隆类B,它是独立类,它只是继承类A的属性。试试吧,检查它会工作 –