• super.getClass()方法


    下面程序的输出结果是多少?

    importjava.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());

        }

    }

     

    很奇怪,结果是Test

    这属于脑筋急转弯的题目,在一个qq群有个网友正好问过这个问题,我觉得挺有趣,就研究了一下,没想到今天还被你面到了,哈哈。

    在test方法中,直接调用getClass().getName()方法,返回的是Test类名

    由于getClass()在Object类中定义成了final,子类不能覆盖该方法,所以,在

    test方法中调用getClass().getName()方法,其实就是在调用从父类继承的getClass()方法,等效于调用super.getClass().getName()方法,所以,super.getClass().getName()方法返回的也应该是Test。

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

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

  • 相关阅读:
    A Famous City
    A Famous ICPC Team
    配置单元测试环境,找不到SenTestingKit
    linux解压.tar命令
    语音输入——科大讯飞
    查看dsym错误信息
    工程里关闭arc
    导入签名错误
    mac显示隐藏文件
    类uialertview弹出动画
  • 原文地址:https://www.cnblogs.com/fthjane/p/4735721.html
Copyright © 2020-2023  润新知