Boa noite,
Gostaria de entender o que é exatamente um Objeto, uma Referência e uma Instância. Também estou com dificuldade em entender a diferença de um para o outro e o que é exatamente o papel de cada um.
Você está vendo a versão anterior da nova experiência da Alura que estamos preparando para você. Em breve, ela ganha uma identidade visual novinha totalmente pensada em potencializar seus estudos!
Boa noite,
Gostaria de entender o que é exatamente um Objeto, uma Referência e uma Instância. Também estou com dificuldade em entender a diferença de um para o outro e o que é exatamente o papel de cada um.
Oi Leandro, tudo bem com você?
Primeiro, vamos esclarecer que um Objeto e uma Instância são a mesma coisa, portanto quando falamos de uma instância de uma classe, estamos nos referindo a um objeto criado a partir dessa classe. Para entender o que é um objeto podemos pegar como exemplo a classe Conta, que nada mais é que um projeto de uma conta, ou seja, não passa de uma de ideia. Portanto, para que possamos manipular uma conta de verdade, precisamos construir algo concreto a partir desse projeto, isto é, precisamos instanciar/criar um objeto a partir dessa classe Conta.
Já a referência é um pouco mais complicada, mas acredito que com um exemplo de código fique mais fácil de pegar o conceito. Sabemos que uma variável pode guardar algum tipo de valor dentro dela, para a referência não é diferente, ela é o que podemos chamar de variável referência, uma variável que guarda o endereço de um objeto. Portanto, quando instanciamos um objeto:
public static void main(String[] args) {
Conta c1;
c1 = new Conta();
}
Estamos alocando um espaço na memória do computador para guardar um novo objeto new Conta(). Depois que esse espaço é alocado, a única forma de acessá-lo é através de uma "flecha" que aponta para o endereço de memória onde esse espaço foi criado. Guardamos essa flecha dentro da variável c1,que agora passa a ser chamada de referência, pois é ela quem agora contém a flecha que referencia o endereço onde o objeto foi criado!
Para um entendimento mais completo do assunto, recomendo muito dar uma lida na apostila FJ11 da Caelum.
Espero ter ajudado, qualquer dúvida estou à sua disposição!
Bons estudos!!
Muito obrigado !!