super.getClass()方法调用
2016-03-15 08:59
281 查看
用Java写程序时,有时我们想得到当前类的名称,而有时候我们又想得到当前类的父类的名称。我们知道得到当前类的名称可以直接调用getClass().gtName()即可,但思考如下程序:
而test1()函数用getClass().getSuperclass().getName()得到父类名称!!!
原因解释:由于getClass()在Object类中定义成了final,子类不能覆盖该方法,所以在test方法中调用getClass().getName()方法,其实就是在调用从父类继承的getClass()方法,等价于调用super.getClass().getName(),所以输出 仍为当前类的名称:Super_getClass。而在test1()中的方法才是真正得到了父类我名称:java.util.Date。
import java.util.Date; public class Super_getClass extends Date{ public void test(){ System.out.println(super.getClass().getName()); } public void test1(){ System.out.println(getClass().getSuperclass().getName()); } public static void main(String[] args) { new Super_getClass().test(); //输出:Super_getClass new Super_getClass().test1(); //输出:java.util.Date } }调用test()函数用super.getClass().getName()得到的结果仍为Super_getClass???
而test1()函数用getClass().getSuperclass().getName()得到父类名称!!!
原因解释:由于getClass()在Object类中定义成了final,子类不能覆盖该方法,所以在test方法中调用getClass().getName()方法,其实就是在调用从父类继承的getClass()方法,等价于调用super.getClass().getName(),所以输出 仍为当前类的名称:Super_getClass。而在test1()中的方法才是真正得到了父类我名称:java.util.Date。
相关文章推荐
- openwrt 之显示相信的信息三
- D盘创建TXT记事本
- 如何让input之间无空隙
- iOS中的事件传递和响应者链条
- c++ 线程
- Eclipse项目中文件或目录自动跳转到计算机相应目录
- 开源无人机项目
- 【LA4015】Caves【Tree DP】
- Android安装NDK运行环境无需cygwin
- 日经春秋 20160315
- 基础练习
- Random.nextint() 和Math.random()的区别
- 极客学院视频分享(2)
- free 一个指针时【 retval = HeapFree(_crtheap, 0, pBlock);】报错的原因
- Win10 QQ五笔默认中文,InputMode默认中文
- struts2实现ajax校验的2种方法
- struts2实现ajax校验的2种方法
- struts2实现ajax校验的2种方法
- Android 控件架构
- PageStateLayout