В этом коде я понимаю возвращаемое значение всего, кроме запроса (m). Почему запрос (m) печатает один вместо двух? Разве это не будет разрешено во время выполнения, что m имеет тип Winter. И тогда не следует печатать два?Динамическое связывание Java
public class Season {
public void weather() {
System.out.println("cold");
}
} // end class Season
public class Winter extends Season {
public void weather() {
System.out.println("freezing");
}
} // end class Winter
public class QuizQuestion {
public static void query(Season arg) {
System.out.println("one");
}
public static void query(Winter arg) {
System.out.println("two");
}
public static void main(String args[]) {
Season s = new Season();
Winter w = new Winter();
Season m = new Winter();
s.weather();
w.weather();
m.weather();
query(s);
query(w);
query(m);
} // end main
} // end class QuizQuestion
Ой, хорошо. Таким образом, в этом случае мы перегружаемся, поэтому требуется объявленный тип, который в этом случае является Сезон. Но если бы мы переопределили, в Runtime было бы понятно, что этот тип - Зима. Это верно? – aaa
Я обновил свой ответ. Надеюсь, теперь это ясно. – Pshemo