代码隐藏:
class A implements Cloneable
{
int i, j;
A(int i, int j)
{
this.i = i;
this.j = j;
}
A()
{
}
}
class B extends A
{
int l, m;
B()
{
}
B(int l, int m)
{
this.l = l;
this.m = m;
}
public static void main(String l[])
{
A obj = new A(1, 2);
B obj1 = (B) obj.clone(); // ERROR
}
}
我知道我违反了克隆的含义,因为我试图将一个对象的字段分配给一个完全不同的对象。但让我感到困惑的是错误陈述。
声明:“错误:clone() 在对象中具有 protected 访问权限”
扩展 A 应该使 B 也可以使用 clone()
吗?如果是这样,那么 i 和 j 的值也应该复制到 l 和 m 吗?这可能吗?
最佳答案
clone()是 protected 方法并使其在子类中可访问,使用 public
访问权限覆盖它。
class A implements Cloneable{
.....
@Override
public Object clone() throws CloneNotSupportedException{
return super.clone();
}
}
关于java: 克隆方法冲突,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12541788/