黑马程序员技术交流社区
标题:
下面程序员的输出结果是?
[打印本页]
作者:
汪洋大海
时间:
2014-1-2 02:28
标题:
下面程序员的输出结果是?
importjava.util.Date;
public class Test extends Date{
public static voidmain(String[] args) {
new Test().test();
}
public void test(){
System.out.println(super.getClass().getName());
}
}
复制代码
作者:
浮出一个美
时间:
2014-1-2 07:52
答案是子类的class,因为父类的getClass()被子类的getClass()覆盖了?
作者:
jibenwujie
时间:
2014-1-2 08:55
在网上看了一下这个问题的解释,
根据我的理解这个问题是这样的:
首先打印出的答案是Test
getClass()方法是属于object的方法,是返回运行时的实例,super是调用父类的方法
重点就在于super只是调用父类,而不是指向父类的一个引用
这就说明执行的时候,实际调用getClass()方法的对象还是Test的实例
在test方法中this.getClass() = super.getClass()
作者:
浮出一个美
时间:
2014-1-2 09:11
本帖最后由 浮出一个美 于 2014-1-2 09:13 编辑
楼上美女正解啊,加个好友吧。{:soso_e163:}
所以如果要调用父类的class的话应该这样做getClass().getSuperclass().getName()
作者:
sd110572
时间:
2014-1-2 15:32
浮出一个美 发表于 2014-1-2 09:11
楼上美女正解啊,加个好友吧。
所以如果要调用父类的class的话应该这样做getClass().getSuper ...
其实楼上性别为男;P
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2