2
respostas

Diferença entre interface e class Super

Olá, qual seria exatamente a diferença de uma classe Super para uma interface?

Eu penso que a interface teria que ter os metódos em comum das sub-classes e a Super classe teria apenas os atributos em comum, seria isso?

2 respostas

Olá, Arthur! A diferença entre uma classe Super e uma interface é que a classe Super é uma classe comum, que pode ser instanciada e ter seus métodos e atributos utilizados diretamente. Já a interface é um contrato que as classes que a implementam devem seguir, ou seja, elas devem implementar todos os métodos definidos na interface.

Na prática, isso significa que uma classe pode herdar de uma classe Super e ter acesso aos seus métodos e atributos, além de poder sobrescrevê-los se necessário. Já uma classe que implementa uma interface deve implementar todos os métodos definidos na interface, mas não pode ter atributos próprios.

Um exemplo prático seria uma classe Animal que é a classe Super de outras classes como Cachorro, Gato e Pássaro. A classe Animal pode ter atributos como nome e idade, além de métodos como comer e dormir, que são comuns a todos os animais. Já uma interface como AnimalDomestico pode ter métodos como acariciar e brincar, que devem ser implementados por todas as classes que a implementam.

Um grande abraço e bons estudos!

Fala, Arthur!

Não que a resposta do nosso brow Fernandes precise de um complemento (deu pra entender bacana), mas apenas dando uma resposta de forma diferente para ajudar a assimilar.

Uma classe Super é uma classe que contém atributos e métodos que podem ser herdados por outras classes que estendem essa classe Super. Em outras palavras, a classe Super é uma classe "mãe" que fornece funcionalidades para suas classes "filhas".

Já uma interface é um tipo de "contrato" que define um conjunto de métodos que uma classe deve implementar. Diferentemente das classes Super, uma interface não pode conter implementações de métodos, apenas suas assinaturas (há exceções, mas não se preocupe com isso agora).

Uma forma de ilustrar essa diferença seria comparando com um manual de instruções para montar um brinquedo. O manual seria como uma interface, pois contém instruções sobre o que fazer, mas não realiza a montagem em si. Já a classe Super seria como uma máquina de montar, que pode ser usada para montar vários brinquedos diferentes. As classes "filhas" seriam como brinquedos que são montados usando a máquina de montar.

Em resumo, uma classe Super é uma classe que fornece funcionalidades para outras classes, enquanto uma interface é um "contrato" que define o que uma classe deve implementar. Ambas são importantes conceitos de orientação a objetos e são usadas em diferentes contextos.