[DUVIDA]O que é um objeto, classe, interface, type struct?

Bem vou pesquisar sobre, mas queria movimentar a comunidade aqui e também tenho alguns tab coins pra gastar.

De sua melhor explicação prfv😁 ou deixe links

Sobre "objeto", já comentei um pouco aqui, segue o trecho relevante:

Quanto à definição de objeto, ela pode ser tão confusa quanto a de OOP. O Maniero também já colocou o link, no qual podemos ver que a definição de objeto é bem mais ampla do que costumamos ver por aí. Praticamente qualquer coisa (variável, estrutura, função/método, etc), qualquer região da memória que contenha um valor e possa ser acessada e manipulada pode ser um objeto.

O problema é que cada linguagem também costuma ter sua própria definição, muitas vezes mais restrita que o conceito geral. Por exemplo, em JavaScript a MDN define como "uma coleção de propriedades". Em Python, um objeto é uma "abstração para dados". Em outras linguagens, é "uma instância de uma classe". Em C11, na seção 3.15, objeto é "uma região de armazenamento de dados no ambiente de execução, cujo conteúdo pode representar valores".

Ou seja, vc pode considerar a definição mais ampla ("qualquer região da memória que contenha um valor e possa ser acessada e manipulada") ou a da linguagem específica que vc está usando.


Classe e interface já costumam ter uma definição mais uniforme. O primeiro é uma estrutura que possui estado (membros/campos) e comportamento (métodos) - na verdade, a implementação mais comum é que a classe só contém a definição desta estrutura, e a partir dela vc cria instâncias (que seriam os objetos, mas como já dito acima, a definição de "objeto" varia conforme a linguagem - algumas adotam esta, de que objetos são instâncias de uma classe).

Mas existem outros casos em que a classe não é exatamente desta forma, como por exemplo JavaScript: nesta linguagem, a classe é apenas um syntax sugar, pois por baixo dos panos ela continua usando protótipos.

Interface é algo que define um contrato (diz o que deve fazer, mas não como - isso fica a cargo das classes que implementarem a interface). Tem mais detalhes aqui e aqui (e também nos links indicados em cada texto).

struct é outra coisa que varia conforme a linguagem. Em C, por exemplo, é uma sequência de membros (pode-se pensar que é uma "classe sem métodos", embora seja ainda mais simples que isso). Em C# é similar a classes (possuem estado e comportamento), mas são tipos por valor (diferente das classes, que são por referência - saiba mais aqui e aqui).

Complementando *links* que podem ser interessantes: - https://pt.stackoverflow.com/q/100812/101 - https://pt.stackoverflow.com/q/107524/101 (os *links* lá precisam ser seguidos). Espero ter ajudado. --- Farei algo que muitos pedem para aprender a programar corretamente, **gratuitamente**. Para saber quando, me segue nas suas plataformas preferidas. Quase não as uso, não terá infindas notificações ([links aqui](https://github.com/maniero/SOpt)).

Aposto que as repostas dos colegas já ajudam bastante, mas talvez valha a pena vc detalhar na sua pergunta a que linguagens se refere.

No exemplo de Go, não existem classes nem objetos. Dessa maneira, uma resposta voltada para Go poderia mais confundir do que ajudar.