A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© @ne_pie尒ce 中级黑马   /  2013-11-9 08:41  /  937 人查看  /  2 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

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呢?求解释?

2 个回复

倒序浏览
getClass()是Object中 返回此 Object 的运行时类的。而你运行时类是Test而非Test父类Date,那么调用getName()方法时返回的自然是Test而非Date。
回复 使用道具 举报
这个你必须了解getClass的函数返回情况,你可以看看api的说明
返回此 Object 的运行时类。返回的 Class 对象是由所表示类的 static synchronized 方法锁定的对象。
这是api的原话,这是什么意思呢,意思是,getclass返回的是调用他的运行时实体类的类名,注意必须是实体,在这里只有子类Test有实体,父类没有构建实体,只是利用super指针调用了getClass方法而已,所以,返回的是正在运行且调用该方法的实体类型,自然就是test

评分

参与人数 1技术分 +1 收起 理由
To + 1 很给力!

查看全部评分

回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马