Что выведет код Middle ООП и класс Object обновлено
Что выведет: перегрузка с null
Вопрос
Что выведет программа (Java 21)? Каждый вывод println с новой строки.
public class Main {
static void f(Object o) { System.out.println("Object"); }
static void f(String s) { System.out.println("String"); }
static void g(Object o) { System.out.println("Object"); }
static void g(Integer i) { System.out.println("Integer"); }
public static void main(String[] args) {
f(null);
Object x = "text";
f(x);
g(42);
g((Object) 42);
}
}
Попробуйте сами
Напишите, что выведет код: каждый вывод с новой строки.
Показать ответ и разбор
Коротко
Код выведет: String, Object, Integer, Object. Для f(null) подходят оба метода, компилятор выбирает самый специфичный: String наследник Object. f(x) выбирается по объявленному типу Object. g(42): во второй фазе int упаковывается в Integer, он специфичнее Object.
Что выведет
String
Object
Integer
Object
Разбор
Для f(null) подходят оба метода, компилятор выбирает самый специфичный: String наследник Object. f(x) выбирается по объявленному типу Object. g(42): во второй фазе int упаковывается в Integer, он специфичнее Object. С явным приведением к Object вызывается g(Object).
Ответьте сами, а не прочитайте
В тренажёре вопрос попадёт в повторения и вернётся, когда начнёт забываться. Плюс билеты с зачётом: 20 вопросов, не больше 2 ошибок.