Java のすべてのクラスは Object から拡張されるため、clone メソッドが必要ですが、それでも clone をオーバーライドする必要があります。
cloneいいえ、メソッドをオーバーライドする必要はありません。継承では、クラスを継承するときに、そのメソッドをオーバーライドする必要はありません。その修飾子が public または protected であっても、大きな違いはありません。superただし、クラス参照でメソッドを直接呼び出す場合、そのメソッドはpublic. 保護されたメソッドは、継承によってのみアクセスできます。つまり、subclass参照を介してのみアクセスできます。superまたは、メソッドをオーバーライドすると、キーワードでアクセスできます。
cloneそうは言っても、そのままではメソッドをオーバーライドしないでくださいbroken。Cloneableクラスを複製するには、インターフェースを実装する必要があるためです。そして、あなたのクラスは代わりにクラスのcloneメソッドを使用します。Objectなぜなら、Cloneableインターフェイスには正確にはcloning. Copy Constructor代わりに使用する方が良いオプションです。
public class A {
private int data;
public A() {
}
public A(A a) {
this.data = a.data;
}
}
詳細については、Joshua Bloch'sEffective Javaのこの章を参照することをお勧めします。この章では、cloneメソッドの使用のすべての側面をカバーしています。
効果的な Java- 項目 11 - 慎重にクローンをオーバーライドする