Quando declara-se uma variável cujo tipo é o nome de uma classe, como em
String nome;
não está se criando um objeto dessa classe, mas simplesmente uma referência para um objeto da classe String, a qual inicialmente não faz referência a nenhum objeto válido:
Quando um objeto dessa classe é criado, obtém-se uma referência válida, que é armazenada na variável cujo tipo é o nome da classe do objeto. Por exemplo, quando cria-se uma string como em
nome = new String("POO/Java");
nome
é uma variável que armazena uma referência para um objeto
específico da classe
String
-- o objeto cujo
conteúdo é "POO/Java":
É importante ressaltar que a variável nome
mantém apenas a
referência para o objeto e não o objeto em si. Assim, uma atribuição como
String outroNome = nome;
não cria outro objeto, mas simplesmente uma outra referência para o mesmo objeto:
O único modo de aplicar os métodos a um objeto é através de uma
referência ao objeto.
Seguindo com o mesmo exemplo, para criar um novo objeto como mesmo conteúdo
do objeto existente, o método
clone()
pode ser aplicado a este:
String outraString = nome.clone();
Em Java, a palavra-chave this
é
utilizada por um objeto para fazer a referência a si próprio.