首先,这个类中的test方法不是构造器。
然后,super关键字不代表实际引用,并不等于一个真实存在的Date对象在调用getClass(),比如new Date().getClass().getName()肯定会返回java.util.Date,而super则不会。super.getClass()只是指调用父类中的的getClass()方法,而getClass实际上都是继承自Object类的,即使你不打super其实调用的也是父类的getClass()方法,作用就是获取运行时的实际类型,调用的主体是Test对象,当然返回的Class对象也是Test类的Class对象。想返回父类的Class对象可以用getClass().getSuperClass()。- 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()); //Output: Test
- System.out.println(getClass().getSuperclass().getName()); //Output: java.util.Date
- System.out.println(Date.class.getName()); //Output: java.util.Date
- System.out.println(super.getClass().getSuperclass().getName()); //Output: java.util.Date
- System.out.println(new Date().getClass().getName()); //Output: java.util.Date
- }
- }
复制代码 |