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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 曾振华 中级黑马   /  2014-2-21 15:14  /  1007 人查看  /  3 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

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());
}

}


运行结果看不懂啊

评分

参与人数 1技术分 +1 收起 理由
zzkang0206 + 1

查看全部评分

3 个回复

倒序浏览

getClass
public final Class<?> getClass()返回此 Object 的运行时类。返回的 Class 对象是由所表示类的 static synchronized 方法锁定的对象。
查阅api文档发现  
Test中的getclass方法实际调用父类Date中的方法 但Date这里的getClass方法 实际上还是上帝Object类中方法  该方法没被Date复写  也不能复写

评分

参与人数 1技术分 +1 收起 理由
何伟超 + 1

查看全部评分

回复 使用道具 举报
返回此时Object的运行时类,此时是Test运行的,所以结果为Test
回复 使用道具 举报
API文档:
getClass()返回一个对象的运行时类。
要想弄白会返回什么就要弄明白什么运行时类这个概念究竟指的是什么。
运行时类是指:能在运行时检测,操作对象的类。
new Test().test();
注意你new的是Test()对象,能够检测,操作该对象的类自然是Test类,返回的也就是Test

评分

参与人数 1技术分 +1 收起 理由
zzkang0206 + 1

查看全部评分

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