クロナブルインターフェースの働き、ディープクローンとシャロークローンとは
クローナブルインターフェースは、オブジェクトがクローニング可能であることを示すマーカーとして動作します。クローナブルインターフェースはマーカーインターフェースであり、メソッドを定義しません。クラスのクローニング能力を示すためにのみ使用されます。
ディープコピーとは、オブジェクトそのもののすべてのプロパティをコピーするだけでなく、オブジェクト内の参照型プロパティも再帰的にコピーするため、クローン後のオブジェクトと元のオブジェクトには関連性がなくなることを指します。
シャローコピーとは、複製操作でオブジェクト自身の全属性のみを複製し、オブジェクトに含まれる参照型属性は複製しないことをいいます。そのため、複製後のオブジェクトは元のオブジェクトと参照型属性を共有し、どちらかのオブジェクトの変更は、もう片方のオブジェクトにも影響を与えます。
Javaでは、Cloneableインターフェースを実装し、クローンメソッドをオーバーライドすることでオブジェクトのクローンを作成できます。ただし、継承元のオブジェクトのcloneメソッドを呼び出し、参照型属性に対してディープクローンを行ってください。