Отлично. Чтобы понять вышесказанное, вы должны сначала понять природу абстрактных классов. В этом отношении они похожи на интерфейсы. Это то, что Oracle говорит об этом здесь .
Абстрактные классы похожи на интерфейсы. Вы не можете создавать их экземпляры, и они могут содержать набор методов, объявленных с реализацией или без нее.
Итак, вам нужно подумать о том, что происходит, когда интерфейс расширяет другой интерфейс. Например ...
//Filename: Sports.java
public interface Sports
{
public void setHomeTeam(String name);
public void setVisitingTeam(String name);
}
//Filename: Football.java
public interface Football extends Sports
{
public void homeTeamScored(int points);
public void visitingTeamScored(int points);
public void endOfQuarter(int quarter);
}
... как видите, это также прекрасно компилируется. Просто потому, что, как и абстрактный класс, интерфейс НЕ может быть создан. Таким образом, не требуется явно упоминать методы от своего «родителя». Однако ВСЕ родительские сигнатуры метода неявно становятся частью расширяющегося интерфейса или реализации абстрактного класса. Таким образом, как только соответствующий класс (тот, который может быть создан) расширяет вышеприведенное, БУДЕТ обязательно обеспечить реализацию каждого абстрактного метода.
Надеюсь, это поможет ... и Аллаху, алам!