刚看到一个有意思的问题:
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()); } }
输出结果为:Test
究其原因:getClass()方法是Object类中的,其方法的功能是返回运行时的类的字节码文件(即该运行时的类class),而每个类都是继承于Object类,因此,super.getClass()方法是调用继承于Object类的getClass()方法,这和直接调用getClass()方法效果一样,因为此时的运行时的类就是Test,整个过程与Date没什么关系。
ps:参考了网上的一些朋友的观点,然后自己总结了下原因。