设为首页 加入收藏

TOP

Java面试题之super.getClass方法调用
2014-11-24 02:33:47 来源: 作者: 【 】 浏览:2
Tags:Java 试题 super.getClass 方法 调用

Java面试题之super.getClass方法调用


今天从网上看了一道Java的面试题,结果不小心就掉在陷阱里了,我觉的这个面试题挺好的,所以分享给大家!


先看一下程序的代码,看看最后的输出结果是多少?


import java.util.Date;


public class Test extends Date
{


public void test()
{


System.out.println(super.getClass().getName());


}


public static void main(String[] args)
{


new Test().test();


}


}


如果不了解,很可能得出错误的答案,其实答案是Test,是不是很奇怪,结果竟然是Test。


这道题就属于脑筋急转弯的题目,很简单的,也很容易落入陷阱中。我想大部分人之所以落入陷阱中可能是因为这个类继承了。


如果在test方法中,直接调用getClass().getName()方法的化,相当于调用this.getClass().getName(),这样返回的就是Test类名


由于getClass()在Object类中定义成了final,子类不能覆盖该方法,所以,Date类也是没有这个方法的,在test方法中调用getClass().getName()方法,其实就是在调用从父类继承的getClass()方法,等效于调用super.getClass().getName()方法,所以,super.getClass().getName()方法返回的也应该是Test。


如果想得到父类的名称,应该用如下代码:


getClass().getSuperClass().getName();


如果这道题没有继承任何类,我相信就不会掉进陷阱里了。


明白了吗?


推荐阅读


】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
分享到: 
上一篇《OpenGL超级宝典》学习笔记 下一篇Bash中用到的通配符

评论

帐  号: 密码: (新用户注册)
验 证 码:
表  情:
内  容: