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.
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 !!