黑马程序员技术交流社区

标题: 请大侠来帮忙? [打印本页]

作者: @ne_pie尒ce    时间: 2013-11-9 08:41
标题: 请大侠来帮忙?
import java.util.Date;


public class Test extends Date {

        /**
         * @param args
         */
        public static void main(String[] args) {
                // TODO Auto-generated method stub
                new Test().test();
        }
        public void test(){
                System.out.println(super.getClass().getName());
        }

}
运行结果:Test
为什么不是Date呢?求解释?


作者: 发哥-阿花    时间: 2013-11-9 09:19
getClass()是Object中 返回此 Object 的运行时类的。而你运行时类是Test而非Test父类Date,那么调用getName()方法时返回的自然是Test而非Date。
作者: 文涛    时间: 2013-11-9 12:14
这个你必须了解getClass的函数返回情况,你可以看看api的说明
返回此 Object 的运行时类。返回的 Class 对象是由所表示类的 static synchronized 方法锁定的对象。
这是api的原话,这是什么意思呢,意思是,getclass返回的是调用他的运行时实体类的类名,注意必须是实体,在这里只有子类Test有实体,父类没有构建实体,只是利用super指针调用了getClass方法而已,所以,返回的是正在运行且调用该方法的实体类型,自然就是test




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2