为什么抽象方法必须由第一个具体类实现,而不是链中的另一个?

Jim*_*mmy 9 java oop

我很好奇为什么抽象方法必须被第一个具体的实现类覆盖,而不是层次结构更改.

我不是建议我想这样做,但我很好奇为什么它必须是第一堂课

考虑这个例子

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中实现这些方法.

可以实例化普通类,而抽象类则不能.想想如果你试图调用类中没有实现的方法会发生什么.


Yoc*_*mer 6

具体课程具体.
这意味着它们应该能够被初始化和使用.
那么,如果你没有实现这些方法,它将如何正确使用?它将是不完整的,因此不具体.

您可以使另一个抽象类继承一个抽象类.