1
resposta

Diferença entre Implements e Extend

Qual a diferença entre eles?

Posso estender uma classe que estende uma classe?

Sem limites?

Exemplos: A classe EventoCustomizado que estende a classe Evento que estende a classe calendario(Quero fazer algo parecido no moodle).

para ficar mais claro: A classe cachorro , que estende a classe mamifero, que extende a classe animal. pode?

Quando uso Implements, tenho que implementar todas as funções da inteface mãe correto? não basta apenas estender....

Se for isso acho que entendi a diferença.

Ou seja, a classe animal tem a função estavivo(), se uso estender posso chamar essa função para qualquer animal(classe) que estende a classe animal, se ao contrario isso é uma interface, para cada animal que eu criar teria que reescrever a função estavivo() certo?

por aí?

1 resposta

Oi Murilove, tudo bem? Por ai sim. Não há (até onde sei) um limite de extensão da classe, ou seja, você pode ter sim uma linhagem de 10, 20, 30 classes herdando umas das outras, porém, no geral, isso não é visto como uma boa prática. No geral, você verá sempre os desenvolvedores recomendando você fugir um pouco da herança. Ela a primeira vista pode parecer muito benéfica, mas ela trás consigo alguns outros problemas.

As funções, que no caso de classes, chamamos de métodos, que são criadas nas classes mãe, podem sim ser chamadas a partir de seus filhos, porém um cuidado especial para os métodos privados, estão não podem, protegidos e públicos sim.

No caso de interface, você precisa implementar em todas as classes caso todas as classes precisem disso. Em casos que você tem esse cenário que você mesmo descreveu, você pode ter uma interface implementada em uma classe e todas as outras classes filhas desta, podem utilizar o método já implementado, claro, se fizer sentido.

Entendeu?