getClass().getName()再学习

    xiaoxiao2021-03-25  78

    先看一段代码:

    package easy; import java.util.Date; public class HelloB extends Date{ private void test(){ System.out.println(super.getClass().getName()); } public static void main(String[] args) { new HelloB().test(); } }输出啥呢?

    输出结果为easy.HelloB

    java提过了获取类名的方法:getClass().getName().开发人员可以通过这个方法来获取类名

    那为啥不是Date而是HelloB呢?

    主要原因java语言中任何类都继承自object类,getClass方法在Object中定义为final与native。

    因而子类不能覆盖该方法,因此,this.getClass()和super.getClass()最终都是调用Object类中的getClass方法。

    而Object类中的getClass方法的释义是:返回此Object类的运行类。

    那如何才能在子类中得到父类中的名字呢?

    可以通过java的反射机制来实现,使用getClass().getSuperclass().getName()。

    看如下代码:

    package easy; import java.util.Date; public class HelloB extends Date{ private void test(){ System.out.println(super.getClass().getSuperclass().getName()); } public static void main(String[] args) { new HelloB().test(); } } 输出为:

    java.util.Date

    转载请注明原文地址: https://ju.6miu.com/read-33541.html

    最新回复(0)