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

Conceito interface ainda não ficou claro

Como o instrutor Paulo falou é um conceito meio encrencado, e eu to tendo um pouco de dificuldade de entender. Eu entendi o conceito de herança, que existe uma classe mãe com atributos e metodos comuns que eu quero utilizar nas classes filhas, que tem especificidades. Entendi que o extends serve apenas uma vez em cada classe, ou seja só pode ter uma classe mãe para essa classe filha que usa o extends. Qual é a relação disso com o conceito de Interface? E pq criar a interface classificavel e nao um metodo comum na classe mãe, já que eu quero usar em todos as classes? E como assim interface é como um contrato?

São várias dúvidas, acho que quando começar a praticar vou entender melhor o conceito

2 respostas
solução!

Oii, Clara!

A interface é como um contrato que estabelece que as classes que a implementam devem possuir determinados métodos, mas sem definir como eles devem ser implementados.

No caso da interface Classificavel que você mencionou, ela define que todas as classes que a implementam devem ter o método getClassificacao(). Isso significa que tanto a classe Filme quanto a classe Episodio (ou qualquer outra que implemente Classificavel) devem possuir este método, mas cada uma delas pode implementá-lo de uma maneira diferente.

Agora, por que usar uma interface e não um método comum na classe mãe? A resposta é que nem sempre as classes que compartilham um método em comum possuem uma relação de herança. No exemplo dado na aula, a classe Filme e a classe Episodio compartilham o método getClassificacao(), mas não há uma relação de herança entre elas (ou seja, uma não é subclasse da outra). Nesse caso, a interface é uma maneira de garantir que ambas as classes tenham esse método.

Quando dizemos que a interface é como um contrato, queremos dizer que ela estabelece uma "obrigação" para as classes que a implementam. No exemplo da aula, ao implementar a interface Classificavel, a classe Filme está "assinando um contrato" que diz: "eu, classe Filme, me comprometo a ter um método chamado getClassificacao()". Se a classe Filme não implementar esse método, o compilador Java vai acusar um erro.

Espero ter ajudado e bons estudos!

Tive a mesma dúvida mas a explicação ficou clara Vinicius, obg.