黑马程序员技术交流社区
标题: 求解!一起来看看这个坑爹的问题 [打印本页]
作者: 刘郑瑞 时间: 2013-1-26 17:20
标题: 求解!一起来看看这个坑爹的问题
本帖最后由 刘郑瑞 于 2013-1-26 17:46 编辑
下面程序的输出结果为什么是Test?
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());
}
}
作者: 张钧杰 时间: 2013-1-26 17:53
11111111111111111111111
作者: 范天成 时间: 2013-1-26 17:54
getClass()在Object类中定义成了final,子类不能覆盖该方法,所以你在
test方法中调用getClass().getName()方法,其实就是在调用从父类继承的getClass()方法,等效于调用super.getClass().getName()方法,所以,super.getClass().getName()方法返回的是Test。
如果想得到父类的名称,如下代码:
getClass().getSuperClass().getName();
作者: Rancho_Gump 时间: 2013-1-26 18:06
楼上正解
作者: 郭嘉 时间: 2013-1-26 18:09
getClass的方法是返回此对象运行时类的 Class 对象,方法是final修饰,所以无论如何super,其调用的getClass也只会是返回其对象运行的class类,也就是test类
作者: 黄锦成 时间: 2013-1-26 18:18
没想过这个问题,一开始就蒙了,后来理清了思路
-
未命名.PNG
(28.88 KB, 下载次数: 47)
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) |
黑马程序员IT技术论坛 X3.2 |