Регистрация
8 Дек 2013
Сообщения
75
Репутация
0
Спасибо
0
Монет
0
Такая ситуация: Описал класс-предок "class A" и класс наследник "class B extends A". В классе A переопределил метод toString() таким образом: public String toString(){ return getClass().getName();} затем в мэйне вызвал A ab = new B().toString();
Вопрос, почему полиморфизм отработал так, что этот метод вернул имя класса B? Ведь getClass() в не переопределён, следовательно в виртуальную таблицу класс A не попал, да и в классе A он также не переопределён? - это такая нативная реализация метода getClass() или я что-то не так понимаю? спасибо!
 
в java объект "знает" какого он класса во время исполнения в сях это знание есть только у компилятора. здесь в переменную ab положен объект класса B, его имя и возвращается. з. ы. Что логично и правильно. Иначе бы getClass всегда возвращал Object просто потому, что этот метод объявлен в классе Object.
 
Назад
Сверху