Я не совсем уверен, правильно ли сформулировал свой вопрос, но я смущен этими строками кода.super() конструктор внутри подкласса, который расширяет подкласс?
public class First {
public String name() {
return "First";
}
}
public class Second extends First {
public void whoRules() {
System.out.print(super.name() + " rules");
System.out.println(" but " + name() + " is even better");
}
public String name() {
return "Second";
}
}
public class Third extends Second {
public String name() {
return "Third";
}
}
Second varSecond = new Second();
Third varThird = new Third();
varSecond.whoRules();
varThird.whoRules();
Когда выше выполнена, она печатает
First rules but second is even better
First rules but third is even better
почему не было бы:
First rules but second is even better
Second rules but third is even better
Может подкласс быть суперкласс для другого класса? Или может быть только один (суперкласс)? (Использование примерного кода выше) Я понимаю, что First
является суперклассом для Second
, но является Second
суперклассами для Third
? Или First
суперкласс для Third
?
Если бы было 10 классов, которые простирались друг от друга (второй проходит первый, третий проходит второй, и т.д.) Будет ли суперкласс для всех этих классов будет First
)
'super.name()' существует во втором классе, хотя метод 'whoRules()' наследуется 'super.name()' в нем по-прежнему указывает на имя суперкласса 'Second', который в вашем случае это '' First "' –