Qual é a diferença entre uma instância e um objeto? Existe uma diferença ou não?
Qual é a diferença entre uma instância e um objeto? Existe uma diferença ou não?
Respostas:
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/
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.
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?
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.
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.
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
Objetos e instâncias são basicamente iguais; mas há uma diferença muito pequena. Se Car
for uma classe, 3 Car
s são 3 objetos diferentes. Todos esses objetos são instâncias. Portanto, esses 3 carros são objetos de instâncias da Car
classe.
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ê.
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
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
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.
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.
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.
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).
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 new
operador, 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.
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
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.
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
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 .
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
Resposta Rápida e Simples
Em relação à diferença entre um object
e 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 Object
classe 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 object
mas 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
.
object
s, por exemplo, têm locks
associado a eles, não instance
s, enquanto instance
s têm métodos. objects
são coletados como lixo, não instance
s.
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) .
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
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.
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.