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?

Desfile de rua
fonte
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/

Dustin Laine
fonte
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.

Kevin Le - Khnle
fonte
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?

Yuval Karmi
fonte
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.

karthik reddy
fonte
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.

Brian Showalter
fonte
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

Durai Amuthan.H
fonte
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ê.

DotNet Harsha Vardhan
fonte
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

Greg Olmstead
fonte
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
heug
fonte
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.

TLiebe
fonte
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.

Vivek Kumar
fonte
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.

prathipati s
fonte
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).

Rehan Ali Khan
fonte
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.

Srishti
fonte
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

user2750565
fonte
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.

Sindhu
fonte
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

p_champ
fonte
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

Johnny
fonte
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)
Syed Ekram Uddin
fonte
-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) .

Koray Tugay
fonte
-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

Chyanit Singh
fonte
-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.

Darxval
fonte
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.

Karamjit Singh Sehdev
fonte