class Main {
public static void main(String[] args) {
new Cloned().clone();
}
}
class Cloned implements Cloneable {
}
これにより、保護されているというエラーが表示されます。object のサブクラスは、そのメソッドを呼び出すことができません。
class Main {
public static void main(String[] args) {
new Cloned().clone();
}
}
class Cloned implements Cloneable {
}
これにより、保護されているというエラーが表示されます。object のサブクラスは、そのメソッドを呼び出すことができません。
clone()
クラス Object の protected メソッドであるため
公にアクセスしたい場合はclone()
、クラスでそのメソッドをオーバーライドする必要があります。
@override
public Object clone()
{
return super.clone();
}
ここでの問題は、それMain
が拡張されないことCloned
です。現状では、Main
を呼び出すことはできますが、 を呼び出すことはできMain.clone
ませんCloned.clone
。
clone
メソッドが宣言されているという事実は、Object
ここでは問題ではありません。パブリック メソッドとは別に、クラスはそれ自身の継承されたメソッドのみを呼び出すことができます。これには、スーパークラスの保護されたメソッドが含まれますが、他の (スーパー) クラスの保護されたメソッドは含まれません。
class Main implements Cloneable {
public static void main(String[] args) {
}
@Override
protected Object clone() throws CloneNotSupportedException {
//TODO Auto-generated method stub
return super.clone();
}
}