Pessoal,
alguém saberia me dizer, porque não seria interessante, ou possível, substituir uma interface por uma classe 100% abstrata?
Abraços
Pessoal,
alguém saberia me dizer, porque não seria interessante, ou possível, substituir uma interface por uma classe 100% abstrata?
Abraços
Não, porque você não pode ter herança múltipla de classes (como em C++). É melhor ter uma ou várias interfaces.
Herança Multipla
nao pode
xD
E tbm pelo seguinte.
EX: Qdo vc extender de uma classe vc irá implementar os métodos que todos os funcionários possuem na empresa, nome, endereco, cpf, rg, etc …
EX: Só irá implementar a interface certos funcionários que terão senha e irão autenticar , gerente, presidente, vendedor, etc, menos zelador, porteiro, quem não irá lidar diretamente com o sistema.
pq classe 100% abstrata você só pode usar fazendo um extends na classe filha, enquanto uma interface você usa fazendo implements… e em java, como disseram acima, naum permite herança multipla… em outras palavras, somente uma classe extends, mas várias podem estar declaradas no implements
Existe um problema semântico também. As duas coisas, apesar de fazerem a mesma coisa, tem significados diferentes.
Na herança, você está dizendo:
“Minha classe é um tipo da outra”.
Com interface, você está dizendo:
“Minha classe se compromete a ter determinado comportamento”.
A primeira relação é muito mais forte. Uma vez que você está se comprometendo a ser um tipo de outra classe, você também herdará atributos e implementações. A classe pode ter nascido 100% abstrata, mas dificilmente ela se manterá assim, a medida que o sistema evoluir. Quando a adição de novas coisas ocorrer, a classe filha obrigatoriamente terá que as assumir também.
Via de regra, prefira sempre interfaces à classes abstratas, justamente para não criar esse tipo de situação.