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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 汪洋大海 中级黑马   /  2014-1-2 02:28  /  1451 人查看  /  4 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

  1. importjava.util.Date;
  2. public class Test extends Date{
  3.     public static voidmain(String[] args) {
  4.        new Test().test();
  5.     }
  6.    
  7.     public void test(){
  8.        System.out.println(super.getClass().getName());
  9.     }
  10. }
复制代码

评分

参与人数 1黑马币 +5 收起 理由
乔兵 + 5

查看全部评分

4 个回复

倒序浏览
答案是子类的class,因为父类的getClass()被子类的getClass()覆盖了?
回复 使用道具 举报
在网上看了一下这个问题的解释,
根据我的理解这个问题是这样的:
首先打印出的答案是Test
getClass()方法是属于object的方法,是返回运行时的实例,super是调用父类的方法
重点就在于super只是调用父类,而不是指向父类的一个引用
这就说明执行的时候,实际调用getClass()方法的对象还是Test的实例
在test方法中this.getClass() = super.getClass()

评分

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

查看全部评分

回复 使用道具 举报
本帖最后由 浮出一个美 于 2014-1-2 09:13 编辑

楼上美女正解啊,加个好友吧。{:soso_e163:}
所以如果要调用父类的class的话应该这样做getClass().getSuperclass().getName()
回复 使用道具 举报
浮出一个美 发表于 2014-1-2 09:11
楼上美女正解啊,加个好友吧。
所以如果要调用父类的class的话应该这样做getClass().getSuper ...

其实楼上性别为男;P
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马