Objeto vs Instância
Programação Orientada a Objetos (POO) é um dos paradigmas de programação mais populares. Na POO, o foco é pensar sobre o problema a ser resolvido em termos de elementos do mundo real e representar o problema em termos de objetos e seu comportamento. Muitas linguagens de programação que suportam aspectos-chave da OOP (chamadas linguagens OOP) têm a classe como a principal ferramenta de programação. Eles são chamados de baseados em classe. As classes são uma representação abstrata de objetos do mundo real. As classes têm propriedades chamadas atributos. Os atributos são implementados como variáveis globais e de instância. Os métodos nas classes representam ou definem o comportamento dessas classes. Métodos e atributos de classes são chamados de membros da classe. Em termos muito simples, uma classe é um projeto ou um modelo para um objeto específico da vida real. Assim, um objeto é o(s) bloco(s) de memória usado(s) para armazenar as informações necessárias de acordo com este blueprint. A instância é um bloco de memória que se refere a um objeto.
O que é um objeto?
Objetos são os resultados da instanciação de uma classe. A instanciação é o processo de pegar o projeto e definir cada atributo e comportamento para que o objeto resultante represente realmente um objeto da vida real. Objeto é um bloco de memória dedicado e contínuo alocado para armazenar informações como variáveis, métodos ou funções, etc. O objeto é criado com o uso do operador new, na linguagem de programação Java. Por exemplo, se houver uma classe chamada Car, o seguinte pode ser usado para criar um objeto da classe Car.
novo Carro();
Aqui, um objeto Carro é criado pelo novo operador e uma referência ao objeto é retornada. O operador new junto com o construtor da classe Car é usado para criar o novo objeto. A vida útil do objeto começa desde a chamada ao seu construtor até o momento em que é destruído. Uma vez que um objeto não é referenciado, ele será removido/destruído pelo coletor de lixo.
O que é uma instância?
Instance é um bloco de memória, que contém a referência a um objeto. Em outras palavras, Instance manterá o endereço do bloco de memória inicial onde o objeto está armazenado. Na verdade, o nome da instância pode ser usado para acessar o início da área de memória do objeto. Os deslocamentos da memória inicial são calculados pelo mecanismo de tempo de execução para que possamos ir para onde os dados individuais ou as referências de método são armazenados. O código Java recortado a seguir pode ser usado para criar uma instância de um objeto Car.
Carro meuCarro=new Carro();
Como mencionado acima, o novo operador cria o objeto Carro e retorna a referência a ele. Essa referência é armazenada na variável do tipo Car myCar. Então, myCar é a instância do objeto Car criado.
Qual é a diferença entre um objeto e uma instância?
Objeto é um bloco contíguo de memória que armazena a informação real que distingue este objeto de outros objetos, enquanto uma instância é uma referência a um objeto. É um bloco de memória, que aponta para o endereço inicial de onde o objeto está armazenado. Duas instâncias podem se referir ao mesmo objeto. O tempo de vida de um objeto e uma instância não estão relacionados. Portanto, uma instância pode ser nula. Assim que todas as instâncias apontando para um objeto forem removidas, o objeto será destruído.