Qual é a diferença entre uma instância e um objeto?


92

Qual é a diferença entre uma instância e um objeto? Existe uma diferença ou não?


10
Talvez você possa deduzir a partir da conhecida mensagem de erro "Referência de objeto não definida para uma instância de um objeto ." : ->
herzmeister

Da especificação JVM: "Um objeto é uma instância de classe alocada dinamicamente ou uma matriz." Docs.oracle.com/javase/specs/jvms/se8/html/jvms-2.html
yfklon

StackOverFlow Acabei de dar uma breve descrição da diferença entre objeto e instância, espero que ajude
Pushkarraj Pujari

1
Um objeto é uma instância de uma classe. Isso é tudo que há para fazer.
Marquês de Lorne

Respostas:


49

Uma instância é um objeto na memória. Basicamente, você cria objetos e os instancia quando os usa.

Aqui está um bom artigo sobre Classes Vs Objects Vs Instances, ele está falando Java, mas se aplica a todos OO.

http://alfredjava.wordpress.com/2008/07/08/class-vs-object-vs-instance/


27
Esta postagem do blog não explica nada.
Koray Tugay

então você quer dizer objeto == classe? ou você quer dizer classe carregada e se torna objeto e objeto instanciado para se tornar instância? você não responde confuso?
p_champ

Pense na classe como uma definição. Quando você instancia a classe, você tem o objeto que pode ser usado. Esse objeto é fisicamente representado na memória.
Dustin Laine

@Dustin Laine a diferença ainda não é clara. Você pode me ajudar?
Torta de

@DustinLaine A questão faz a diferença entre 'instância' e 'objeto'. Porém, nesta resposta, o que foi explicado é o processo de 'instanciação' de uma classe para obtenção de 'objeto'. Sua postagem e seu comentário não correspondem. Na postagem, é mencionado que uma 'instância' é um objeto na memória. Porém, no comentário, é mencionado que depois de instanciar a classe, você obtém o 'objeto', que é representado na memória. Isso é um pouco ambíguo.
Srishti

56

A Instância e o Objeto são de Programação Orientada a Objetos .

Para algumas linguagens de programação como Java, C ++ e Smalltalk, é importante descrever e compreender o código. Em outras linguagens que usamos em Programação Estruturada este conceito não existe.

Esta é a visão da Programação Estrutural. Não há diferença significativa real que deva consumir muito do seu tempo. Pode haver alguma linguagem sofisticada sobre a qual algumas pessoas podem ocupar muito espaço para escrever, mas no final do dia, no que diz respeito a um codificador, desenvolvedor, programador, arquiteto, uma instância de uma classe e uma objeto significa a mesma coisa e muitas vezes pode ser usado indistintamente. Nunca conheci ninguém na minha carreira que fosse exigente e passasse meia hora tentando apontar as diferenças, porque realmente não há nenhuma. O tempo pode ser melhor gasto em outros esforços de desenvolvimento.

ATUALIZAÇÃO Com relação ao Swift, é isso que a Apple que inventou o Swift prefere:

Uma instância de uma classe é tradicionalmente conhecida como um objeto. No entanto, as classes e estruturas do Swift são muito mais próximas em funcionalidade do que em outras linguagens, e grande parte deste capítulo descreve a funcionalidade que pode ser aplicada a instâncias de uma classe ou de um tipo de estrutura. Por causa disso, o termo instância mais geral é usado.


20

Excelente pergunta.

Vou explicar da maneira mais simples possível: digamos que você tenha 5 maçãs em sua cesta. Cada uma dessas maçãs é um objeto do tipo Maçã, que possui algumas características (ou seja, grande, redondo, cresce em árvores).

Em termos de programação, você pode ter uma classe chamada Apple, que possui variáveis ​​de tamanho: grande, forma: redonda, habitat: cresce em árvores. Para ter 5 maçãs em sua cesta, você precisa instanciar 5 maçãs. Apple apple1, Apple apple2, Apple apple3 etc....

Alternativamente: objetos são as definições de algo, instâncias são as coisas físicas.

Isso faz sentido?


60
Não é verdade. :) "Objetos são as definições de algo" O que você chama de objetos aqui são classes.
T-Gergely de

11

Instância: instância significa apenas criar uma referência (cópia).

objeto: significa quando a localização da memória está associada ao objeto (é uma entidade de tempo de execução da classe) usando o novo operador.

Em palavras simples, Instância se refere à cópia do objeto em um determinado momento, enquanto objeto se refere ao endereço de memória da classe.


1
dizer que uma instância é uma referência a um objeto realmente esclareceu as coisas para mim.
John C

2
@JohnC Não deveria, porque não está correto. Um objeto é uma instância de uma classe. Isso é tudo que há para fazer.
Marquês de Lorne

8

Digamos que você esteja construindo algumas cadeiras.

O diagrama que mostra como construir uma cadeira e montá-la corresponde a uma aula de software.

Digamos que você construa cinco cadeiras de acordo com o padrão desse diagrama. Da mesma forma, você pode construir cinco objetos de software de acordo com o padrão de uma classe.

Cada cadeira tem um número exclusivo gravado na parte inferior do assento para identificar cada cadeira específica. A cadeira 3 é uma instância de um padrão de cadeira. Da mesma forma, o local da memória 3 pode conter uma instância de um padrão de software.

Portanto, uma instância (cadeira 3) é uma manifestação única e específica de um padrão de cadeira.


2
Um objeto é uma instância de uma classe. Uma instância não é uma instância de um objeto. A resposta não tem sentido.
Marquês de Lorne

1
Uau, depois de nove anos, alguém finalmente apontou a falha em minha explicação. Obrigado! Melhor agora?
Brian Showalter

7

Objeto :

É um termo genérico basicamente é um pacote de software que tem estado (variáveis) e comportamento (métodos)

Classe :

Uma cópia azul (modelo) para uma instância de objeto - é um objeto único, por exemplo, você cria um objeto duas vezes, o que significa que você criou duas instâncias

Deixe-me dar um exemplo

Class student()
{
   private string firstName;
  public student(string fname)
  {
    firstName=fname;
  }
  Public string GetFirstName()
  {
    return firstName;
  }
}

Exemplo de objeto :

Aluno s1 = novo aluno ("Martin"); Aluno s2 = novo aluno ("Kumar");

Os s1, s2 estão tendo objeto da classe Aluno

Instância :

s1 e s2 são instâncias do objeto aluno - os dois são únicos .

ele também pode ser chamado de referência .

basicamente o s1 e s2 são variáveis ​​que são atribuídas a um objeto


1
Um objeto é uma instância de uma classe.
Marquês de Lorne

7

Objetos e instâncias são basicamente iguais; mas há uma diferença muito pequena. Se Carfor uma classe, 3 Cars são 3 objetos diferentes. Todos esses objetos são instâncias. Portanto, esses 3 carros são objetos de instâncias da Carclasse.

Mas a palavra "instância" também pode significar "instância de estrutura". Mas o objeto é apenas para aulas.

Todos os objetos são instâncias. Nem todas as instâncias devem ser objetos. As instâncias podem ser "instâncias de estrutura" ou "objetos". Espero que isso torne a diferença clara para você.


3

Um objeto é uma construção, algo estático que tem certos recursos e características, como propriedades e métodos, pode ser qualquer coisa (uma string, um controle de usuário, etc)

Uma instância é uma cópia exclusiva desse objeto que você pode usar e fazer coisas com ele.

Imagine um produto como um computador.

A estação de trabalho xw6400 é um objeto

SUA estação de trabalho xw6400 (ou a estação de trabalho xw6400 de SUA ESPOSA) é uma instância do objeto estação de trabalho xw6400


1
Seu primeiro e segundo parágrafos descrevem classes, não objetos.
Marquês de Lorne

2

Essa resposta pode ser considerada banal, mas se preocupar com as diferenças entre uma instância e um objeto já é uma cidade banal.

Acho que é melhor representado em javascript:

let obj= {"poo":1} 
// "obj" is an object

versos

Class Trash {
    constructor(){this.poo = 1;}
}

let i = new Trash();
// "i" is an instance

1

Uma instância é uma representação específica de um objeto. Um objeto é uma coisa genérica, enquanto uma instância é um único objeto que foi criado na memória. Normalmente, uma instância terá valores atribuídos às suas propriedades que a diferenciam de outras instâncias do tipo de objeto.


1

Se virmos a Definição de Objeto e o objeto Instância -

A memória alocada para o membro da classe em tempo de execução é chamada de objeto ou o objeto é a instância de Class.

Vamos ver a definição de instância -

A memória alocada para Qualquer em tempo de execução é chamada de variável de instância.

Agora entenda o significado de qualquer alocação de memória de tempo de execução acontecer em C também por meio de Malloc, Calloc, Realloc, como:

struct p
{

}
p *t1
t1=(p) malloc(sizeof(p))

Portanto, aqui também estamos alocando a alocação de memória de tempo de execução, mas aqui chamamos como instância, então t1 é instância aqui, não podemos dizer t1 como objeto, então cada objeto é a instância de Classe, mas cada instância não é Objeto.


Há uma resposta correta escondida aqui em algum lugar, mas a linguagem precisa ser limpa e simplificada.
Marquês de Lorne

1

Object - Uma instância de uma classe que tem seu próprio estado e acesso a todos os comportamentos definidos por sua classe.

Instância - Referência a uma área de memória para aquela classe particular.


1

Eu não posso acreditar, exceto por um cara que ninguém usou o código para explicar isso, deixe-me tentar também!

// Design Class
class HumanClass {
    var name:String
    init(name:String) {
        self.name = name
    }
}

var humanClassObject1 = HumanClass(name: "Rehan") 

Agora, o lado esquerdo, isto é: "humanClassObject1" é o objeto, e o lado direito, ou seja: HumanClass (nome: "Rehan") é a instância desse objeto.

var humanClassObject2 = HumanClass(name: "Ahmad") // again object on left and it's instance on the right.

Então, basicamente, a instância contém os valores específicos para aquele objeto e os objetos contêm a localização da memória (em tempo de execução).

Lembre-se da famosa declaração "referência de objeto não definida para uma instância de um objeto", isso significa que objetos não inicializados não têm nenhuma instância. Em algumas linguagens de programação como swift, o compilador não permitirá que você projete uma classe que não tenha nenhuma maneira de inicializar todos os seus membros (variável, por exemplo: nome, idade etc.), mas em algumas linguagens você pode fazer isso:

// Design Class
class HumanClass {
    var name:String // See we don't have any way to initialise name property.
}

E o erro só será mostrado em tempo de execução quando você tentar fazer algo assim:

var myClass = HumanClass()
print(myClass.name) // will give, object reference not set to an instance of the object.

Este erro indica que o valor específico (para variáveis ​​\ propriedade) é a "INSTÂNCIA" como tentei explicar acima! E o objeto, ou seja: "myClass", contém a localização da memória (em tempo de execução).


1

Quando uma variável é declarada de um tipo personalizado (classe), apenas uma referência é criada, que é chamada de objeto. Neste estágio, nenhuma memória é alocada para este objeto . Ele atua apenas como um ponteiro (para o local onde o objeto será armazenado no futuro). Este processo é denominado 'Declaração'.

Employee e; // e is an object

Por outro lado, quando uma variável de tipo customizado é declarada usando o newoperador, que aloca memória em heap para este objeto e retorna a referência para a memória alocada. Este objeto que agora é denominado como instância . Este processo é denominado 'Instanciação'.

Employee e = new Employee(); // e is an instance

Por outro lado, em algumas linguagens como Java, um objeto é equivalente a uma instância, como fica evidente na linha escrita na documentação da Oracle sobre Java :

Observação: a frase "instanciar uma classe" significa o mesmo que "criar um objeto". Quando você cria um objeto, está criando uma "instância" de uma classe, portanto, "instanciando" uma classe.


0

cada objeto é considerado uma instância de sua classe, mas cada instância da classe tem seu próprio valor para cada atributo intances compartilha o nome do atributo e operação com suas intances de classe, mas um objeto contém uma referência implícita à sua classe on


0

Classe: uma classe é uma planta. Objeto: É a cópia da aula. Instância: É uma variável que é usada para manter o endereço de memória do objeto.

Um exemplo analítico muito básico

Class House -> Planta da casa. Mas você não pode viver na planta. Você precisa de uma casa física que seja a instância da classe para morar, ou seja, o endereço real do objeto é a instância. As instâncias representam objetos.


Instância se refere ao objeto, não a uma variável.
Marquês de Lorne

0

Depois de instanciar uma classe (usando new), essa coisa instanciada se torna um objeto. Um objeto é algo que pode aderir aos princípios de encapsulamento, polimorfismo, abstração da programação orientada a objetos e a coisa real com a qual um programa interage para consumir os membros da instância definidos na classe. O objeto contém membros da instância (membros não estáticos).

Assim, a instância de uma classe é um objeto. A palavra 'instância' é usada quando você está se referindo à origem de onde ela nasceu, é mais claro se você disser 'instância de uma classe' em comparação com 'objeto de uma classe' (embora o último possa ser usado).

Também pode ler a seção 'Classes internas' deste documento java sobre classes aninhadas - https://docs.oracle.com/javase/tutorial/java/javaOO/nested.html


0

Java é uma linguagem de programação orientada a objetos (OOP). Isso significa que tudo em Java, exceto os tipos primitivos, é um objeto.

Agora, os objetos Java são semelhantes aos objetos do mundo real. Por exemplo, podemos criar um objeto carro em Java, que terá propriedades como velocidade e cor atuais; e comportamentos como: acelerar e estacionar.

Isso é objeto .

insira a descrição da imagem aqui

A instância , por outro lado, é uma cópia inicializada exclusivamente daquele objeto que se parece Car car = new Car().

Confira para aprender mais sobre classes e objetos Java


Um objeto é uma instância de uma classe.
Marquês de Lorne

0

Resposta Rápida e Simples

  • Classe : uma especificação, projeto de um objeto
  • Objeto : presença física da classe na memória
  • Instância : uma cópia única do objeto (mesma estrutura, dados diferentes)

-1

Em relação à diferença entre um objecte um instance, não acho que haja consenso.

Parece-me que as pessoas mudam de forma bastante intercambiável, em jornais, postagens de blogs, livros ou conversas.

Quanto a mim, a meu ver, um objeto é uma entidade genérica e viva na memória, especificada pela linguagem em que é usado. Assim como a Objectclasse emJava . Não nos importamos muito com seu tipo ou com qualquer outra coisa associada a ele, seja gerenciado por um contêiner ou não.

Um instanceé um objectmas está associado a um tipo, como em this method accepts Foo instances, ou you can not put Animal instances in an instance of a List of Vehicles.

objects, por exemplo, têm locksassociado a eles, não instances, enquanto instances têm métodos. objectssão coletados como lixo, não instances.

Mas, como eu disse, é apenas assim que vejo, e não acho que haja qualquer organização a que possamos nos referir para uma definição padrão entre eles e todos terão seus entendimentos / definições ligeiramente diferentes (é claro, dentro de certos limites) .


-1

Um objeto é uma coisa genérica, por exemplo, assumir uma função linear em matemática

ax + b é um objeto, enquanto 3x + 2 é uma instância desse objeto

Objeto <<< Instância

Geral <<< Específico

Não há nada mais nisso


-2

Um objeto pode ser uma classe, digamos que você tenha uma classe chamada basquete.

mas você quer ter várias bolas de basquete, então em seu código você cria mais de 1 bola de basquete

diga basketball1 e basketball2. Então você executa seu aplicativo. Agora você tem 2 instâncias do objeto basquete.


Isso significaria que um objeto é uma instância de um construtor de classe?
streetparade de

pense no objeto como um projeto. digamos que temos um plano para o basquete, essa é a classe. quando a bola de basquete é criada e feita, agora existe, então isso significaria que temos 1 instância do objeto bola de basquete. se construirmos outra bola de basquete a partir do objeto (planta). agora temos 2 instâncias do basquete. Sempre há apenas 1 objeto, mas podemos fazer muitas instâncias desse objeto.
Darxval

@Darxval então o que é uma classe
Chyanit Singh

-3

Objeto refere-se à classe e instância refere-se a um objeto. Em outras palavras, instância é uma cópia de um objeto com valores específicos.

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.