コード:の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
}
}
私は、私は完全に別のオブジェクトに1つのオブジェクトのフィールドを割り当てるしようとしていますように私はクローンの意味を違反していますことを知っています。しかし、それは私を混乱させるエラーステートメントです。
声明:「エラー:クローン()オブジェクト内のアクセス保護されています」また、Bが利用できるclone()
をしなければならない拡張
を?それで、iとjの値をlとmにもコピーする必要がありますか?これは可能ですか?
clone()が保護されている場合はAに、BがAを継承する場合はBにはクローンへのアクセス権が必要ですか? – Nil
@ rd4code私の答えを参照してください。 Bはクローンメソッドにアクセスできます。しかし、BはAを介さずに継承によってアクセスする必要があります。 – CKing