Sometimes, I came across some class design as follow.
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();
}
I was wondering, what is the purpose of having an abstract_dog class? Why we “transform” the non-abstract speak method into abstract speak again?
In case you want to create a base class that forces people to override
speak, but inheritsDog.