Это хорошо. Чтобы понять вышесказанное, вы должны сначала понять природу абстрактных классов. В этом отношении они похожи на интерфейсы. Вот что 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);
}
... как видите, это тоже прекрасно компилируется. Просто потому, что, как и в случае с абстрактным классом, нельзя создать экземпляр интерфейса. Таким образом, не требуется явного упоминания методов своего «родителя». Однако ВСЕ сигнатуры родительских методов НЕявно становятся частью расширяемого интерфейса или реализации абстрактного класса. Итак, как только правильный класс (тот, который может быть создан) расширяет вышеуказанное, он БУДЕТ необходим для обеспечения реализации каждого отдельного абстрактного метода.
Надеюсь, что это поможет ... и Аллаху алам!