A volte, mi sono imbattuto in qualche progetto di classe come segue.Scopo di avere figli astratti estendendo il genitore concreto
abstract class animal {
public abstract void speak();
}
class dog extends animal {
@Override
public void speak() {
// Do something.
}
}
abstract class abstract_dog extends dog {
@Override
public abstract void speak();
}
Mi chiedevo, qual è lo scopo di avere una classe abstract_dog
? Perché "trasformiamo" il metodo di parlare non astratto in astratto, parliamo ancora?
Nota: se si controlla la gerarchia delle classi, un approccio migliore potrebbe consistere nell'eliminare completamente la classe cane concreto o nella sottoclasse abstract_dog. Preferisci rendere astratte le classi non fogliari. –