Solucionado (ver solução)
Solucionado
(ver solução)
3
respostas

extends x implements

Boa noite pessoal pra mim ainda não ficou muito claro a interface, qual seria na prática a diferença da interface pra herança? qual seria o momento mais adequado pra cada? obrigado!

3 respostas
solução!

Olá, Paulo!

A herança (usando extends) e as interfaces (usando implements) são duas formas de estabelecer uma relação entre classes, mas elas têm propósitos diferentes.

A herança é usada quando você quer criar uma nova classe que é uma versão especializada de uma classe existente. Por exemplo, se você tem uma classe "Animal" e quer criar uma classe "Cachorro", você poderia fazer "Cachorro extends Animal". Isso significa que a classe Cachorro herda todas as características (atributos e métodos) da classe Animal, podendo adicionar novas características ou modificar as herdadas.

Por outro lado, as interfaces são usadas para definir um contrato que as classes devem seguir. Quando uma classe implementa uma interface, ela está se comprometendo a fornecer certos comportamentos. Por exemplo, na aula que você está estudando, temos a interface "Tributavel" e as classes "Produto" e "Servico" que implementam essa interface. Isso significa que tanto Produto quanto Servico devem ter um método getValorImposto(), mas a implementação desse método pode ser diferente para cada classe.

Então, quando usar cada um? A herança é útil quando você tem uma relação "é um" entre classes. Por exemplo, "Cachorro é um Animal". As interfaces são úteis quando você quer garantir que várias classes diferentes tenham um comportamento comum, mesmo que a implementação desse comportamento seja diferente para cada classe. No exemplo da aula, tanto Produto quanto Servico podem ter impostos calculados, então ambos implementam a interface Tributavel.

Espero ter ajudado e bons estudos!

Muito obrigado, Vinicius! Clareou muito por aqui

mas então quando implementamos uma interface, por exemplo, na classe "produto", enquanto eu não discriminar algo a tributar (linkando que vem da interface Tributavel) ele não vai compilar?

Isso mesmo, Paulo :)

Você precisa fornecer as implementações para todos os métodos da interface ao implementá-la em uma classe, caso contrário, ocorrerá um erro de compilação. Isso garante que as classes que afirmam implementar uma determinada interface realmente cumpram o contrato estabelecido pela interface.

Quer mergulhar em tecnologia e aprendizagem?

Receba a newsletter que o nosso CEO escreve pessoalmente, com insights do mercado de trabalho, ciência e desenvolvimento de software