Выбор ответа Junior ООП и класс Object спрашивают часто обновлено
Перегрузка и объявленный тип
Вопрос
Что выведет код?
static void print(Object o) { System.out.println("Object"); }
static void print(String s) { System.out.println("String"); }
Object x = "hello";
print(x);
Попробуйте сами
Выберите вариант, и откроется разбор.
Показать ответ и разбор
Коротко
Правильный ответ: Object. Перегрузка выбирается компилятором по объявленному типу аргумента.
Варианты ответа
StringObjectправильный ответ- Ошибка компиляции: неоднозначный вызов
- Зависит от JVM
Разбор
Перегрузка выбирается компилятором по объявленному типу аргумента. Переменная x объявлена как Object, значит вызывается print(Object). Ответ String был бы при переопределении (выбор по реальному объекту), но тут перегрузка. Неоднозначности нет: для Object подходит ровно один метод.
Ответьте сами, а не прочитайте
В тренажёре вопрос попадёт в повторения и вернётся, когда начнёт забываться. Плюс билеты с зачётом: 20 вопросов, не больше 2 ошибок.