Why do abstract methods have to be implemented by the first concrete class, and not one further down the chain?

Viewed 8399

I'm curious as to why abstract methods MUST be overridden by the first concrete implementing class, and not one further down the hierarchy change.

I'm not suggesting I want to do this, but I'm curious as to why it has to be the first class

Consider this example

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
    }
}
8 Answers
Related