我很好奇为什么抽象方法必须被第一个具体的实现类覆盖,而不是层次结构更改.
我不是建议我想这样做,但我很好奇为什么它必须是第一堂课
考虑这个例子
abstract class Upper
{
abstract void doSomething();
}
class Middle extends Upper
{
void doSomething()
{
// I'm forced to be implemented here
}
}
abstract class Lower extends Middle
{
}
class Bottom extends Lower
{
void doSomething()
{
// I'm valid, but I'm too far down the hierarchy
}
}
Run Code Online (Sandbox Code Playgroud)
Leo*_*ngs 24
根据定义,普通类必须实现所有抽象方法.如果你要声明中间抽象,那么你就不必在Middle中实现这些方法.
可以实例化普通类,而抽象类则不能.想想如果你试图调用类中没有实现的方法会发生什么.