请看下面的java代码:
public class Father {}
public class Son extends Father {
public void m() {
System.out.println(super.getClass());
}
public static void main(String[] args) {
Son s = new Son();
s.m();
}
}
请问为什么打印结果是class Son?
应该是class Father才对,为什么,谢谢!
------解决方案--------------------
由于getClass()在Object类中定义成了final,子类不能覆盖该方法,所以,在
m方法中调用getClass方法,其实就是在调用从父类继承的getClass()方法,等效于调用super.getClass()方法,所以,super.getClass方法返回的也应该是Son。