下面程序的输出结果是多少?
import java.util.Date;
public class Test extends Date {
public static void main(String[] args) {
new Test().test();
}
public void test() {
System.out.println(super.getClass().getName());
}
}
System.out.println(super.getClass().getName());
为什么没有输出Date?
因为super不代表超类的引用,只是代表调用父类的方法,getCalss是Object类的方法,它返回对象运行时的类型,因此返回的是Test。
这里的super.getClass().getName()
和getClass().getName()
和this.getClass().getName()
返回的都是Test
getClass方法在Object类中定义为了final,所以super,this调用的都是Object的getClass方法,返回相同。
如果要得到父类的名称,用如下代码: getClass().getSuperClass().getName();