Какой класс getClass() сообщает в конструкторе базового класса
На Яве можно предположить, что getClass()
Вызванный внутри конструктора класса, используемого в качестве базового класса, предоставит информацию о производном классе, а не о классе базового класса?
Кажется, это работает, но я думаю, это не обязательно означает, что это безопасно. Например, если у меня есть следующие два класса:
public class Parent {
public Parent() {
System.out.println(getClass().getName());
}
}
А также:
public class Derived extends Parent {
public Derived() {
super();
}
public static void main(String... args) {
new Derived();
}
}
Когда я бегу main()
метод в производном классе выводит: Derived
(на это я и надеялся). Но могу ли я рассчитывать на такое поведение в JVM?
1 ответ
getClass
один из Object
методы и возвращает класс времени выполненияthis
:
Возвращает класс времени выполнения этого объекта. Возвращенный объект Class - это объект, который заблокирован статическими синхронизированными методами представленного класса.
Так что да, он всегда вернется Derived
,