背後代碼:的java:克隆方法違反
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()
提供給B還?如果是這樣,那麼i和j的值應該被複制到l和m中?這可能嗎 ?
如果clone()受保護,那麼它對A可用,如果B擴展A,那麼B應該有權訪問克隆? – Nil
@ rd4code查看我的回答。 B有權訪問克隆方法。但是B應該通過繼承來訪問它,而不是直接通過A來訪問它。 – CKing