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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 刘源 中级黑马   /  2012-8-23 21:06  /  1431 人查看  /  3 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 刘源 于 2012-8-24 10:26 编辑

"问题已解决"

public  class Test extends Date{
public static void main(String[] args) {
new Test().test();
}
public void test(){
System.out.println(super.getClass().getName());
}
}
为什么输出还是test.而不是Date?

3 个回复

正序浏览
本帖最后由 霍明波 于 2012-8-24 08:11 编辑

API定义:public final Class<?> getClass(),其在Object类中,不能被覆盖调用的都是Object的方法(天外有天),返回值:表示此对象运行时类的 Class 对象
import java.util.*;
public  class Test extends Date{
        public static void main(String[] args) {
        new Test().test();
        }
public void test(){
        System.out.println(this.getClass().getName());
        System.out.println(getClass().getName());
        System.out.println(super.getClass().getName());
        }
}
都会打印test,

评分

参与人数 1技术分 +1 收起 理由
张_涛 + 1 赞一个!

查看全部评分

回复 使用道具 举报
test方法直接调用getClass().getName()方法,返回的是Test类名。
但是getClass()在Object类中定义成了final,子类不能覆盖它。
此处test中其实就是在调用父类的getClass()方法,等于调用super.getClass().getName()方法。所以返回的是Test。

评分

参与人数 1技术分 +1 收起 理由
张_涛 + 1

查看全部评分

回复 使用道具 举报
你确保了getName()中调用的是非私有变量吗? 如果是私有变量那一定调不出来的了
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马