b) Método clone()
O método clone() é um método do tipo native, isso significa que ele não foi escrito em java, mas em alguma outra linguagem de programação como C ou C++. Java possui um mecanismo especial para passar parâmetros para métodos nativos, chamá-los e obter o retorno. Quem quiser mais detalhes sobre o assunto poderá consultar a API Java.
A função do método clone é duplicar rapidamente um objeto, duplicando a zona de memória na qual ele se encontra. Para duplicar um objeto basta chamar esse método que nos retornará uma cópia do objeto em questão.
Entretanto, é importante salientar que, por padrão, o Java proíbe a clonagem de objetos. Para que possa então duplicar um objeto você deverá sobrecarregar esse método que é protected na classe Object por um método public na classe do objeto que se quiser clonar. Além disso, a classe deverá implementar a interface Cloneable. Essa interface não define nenhum método, mas serve para autorizar a execução da clonagem de uma instância.
Apresentamos a seguir um exemplo de sobrecarga na classe Retangulo:
public class Retangulo extends Forma implements Cloneable { public Object clone() throws CloneNotSupportedException { return super.clone() ; } }