Назад к вопросам
JuniorТеорияЧасто
Что выведет программа?
public class Main {
static void g(Object o) { System.out.print("Object"); }
static void g(String s) { System.out.print("String"); }
public static void main(String[] args) {
Object x = "hi";
g(x);
g("hi");
}
}ObjectString
- Ждать
StringString: вxлежит строка, но перегрузку компилятор выбирает до запуска, по объявленному типуObject. - Ждать
ObjectObject: литерал"hi"имеет типString, поэтомуg(String)совпадает с ним точно и важнееg(Object).
- Как сделать, чтобы
g(x)вызвалg(String), не меняя объявлениеx? - Какая версия переопределённого метода выполнится, если вызвать его через переменную типа
Object?