请选择 进入手机版 | 继续访问电脑版
设为首页收藏本站

java知识分享-我的java记事本

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 1012|回复: 0

super.getClass()方法调用

[复制链接]

131

主题

132

帖子

581

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
581
发表于 2015-3-15 23:08:49 | 显示全部楼层 |阅读模式
下面程序的输出结果是多少?
  1. importjava.util.Date;
  2. public class Test extends Date{
  3.     public static void main(String[] args) {
  4.        new Test().test();
  5.     }
  6.    
  7.     public void test(){
  8.        System.out.println(super.getClass().getName());
  9.     }
  10. }
复制代码

很奇怪,结果是Test
这属于脑筋急转弯的题目,在一个qq群有个网友正好问过这个问题,我觉得挺有趣,就研究了一下,没想到今天还被你面到了,哈哈。
test方法中,直接调用getClass().getName()方法,返回的是Test类名
由于getClass()Object类中定义成了final,子类不能覆盖该方法,所以,在
test方法中调用getClass().getName()方法,其实就是在调用从父类继承的getClass()方法,等效于调用super.getClass().getName()方法,所以,super.getClass().getName()方法返回的也应该是Test
如果想得到父类的名称,应该用如下代码:
getClass().getSuperClass().getName();

回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|手机版|小黑屋|java知识分享 ( 闽ICP备14003021号-4   

GMT+8, 2019-7-21 23:29 , Processed in 0.066072 second(s), 24 queries .

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表
声雨竹官方旗舰店    制砂机    我爱辅助网    煎药机    束丝机    两化融合    深圳seo    网络公关