获取父类的类名

获得本类的类名:this.getClass().getName()

public class Test{
    public void test(){
        System.out.println(this.getClass().getName());
}
    public static void main(String[] args){
        new Test().test();
}
}

输出结果为test

那么,super.getClass().getName()方法能不能获得父类的方法名呢?答案是否定的

class A{}
public class Test extends A{
    public void test(){
        System.out.println(super.getClass().getName());
}
    public static void main(String[] args){
        new Test().test();
}
}

输出结果为test

此方法是不能获得父类的类名的,原因在于:java语言中任何类都继承自object类,getClass()方法在object类中被定义为final和native,子类不能覆盖该方法。因此this.getClass()和super.getClass()最终都调用的是object中的getClass()方法。而Object的getClass()方法的释义是:返回此Object的运行时类。因此上例实际运行的是Test而不是A。
要想在子类中输出父类的名字,就要用到java的反射机制(不懂请移至java的反射机制

),使用getClass().getSuperclass().getName(),代码如下:

class A{}
public class Test extends A{
    public void test(){
        System.out.println(this.getClass().getSuperclass().getName());
}
    public static void main(String[] args){
        new Test().test();
}
}

输出结果为A

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值