下面程序的输出结果是多少?
结果,程序
已帮助 人
下面程序的输出结果是多少?
-
正确答案:
import java.util.Date;
public class Test extends Date{
/**
* @param args add by zxx ,Dec 9, 2008
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
new Test().test();
}
public void test()
{
System.out.println(
super.getClass().getName()
);
}
}
很奇怪,结果是Test
这属于脑筋急转弯的题目,在一个qq 群有个网友正好问过这个问题,我觉得挺有趣,就研究了
一下,没想到今天还被你面到了,哈哈。
在 test 方法中,直接调用getClass().getName()方法,返回的是Test 类名
由于getClass()在Object 类中定义成了final,子类不能覆盖该方法,所以,在
test 方法中调用getClass().getName()方法,其实就是在调用从父类继承的getClass()
方法, 等效于调用super.getClass().getName() 方法, 所以,
super.getClass().getName()方法返回的也应该是Test。
如果想得到父类的名称,应该用如下代码:
getClass().getSuperClass().getName();
