• 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();

  • 相关阅读:
    29 求和
    28 跳转控制语句 goto
    27 跳转控制语句 continue
    26 跳转控制语句 break
    25 打印金字塔
    24 打印九九乘法表
    23 多重循环控制
    22 do-while 循环
    21 while 循环
    20 for循环控制
  • 原文地址:https://www.cnblogs.com/fthjane/p/4735721.html
Copyright © 2020-2023  润新知