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's
Effective Javaのこの章を参照することをお勧めします。この章では、clone
メソッドの使用のすべての側面をカバーしています。
効果的な Java- 項目 11 - 慎重にクローンをオーバーライドする