背后代码:的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