java面试题网

普通会员

483

帖子

9

回复

187

积分

楼主
发表于 2018-03-22 09:52:45 | 查看: 5392| 回复: 0

.super.getClass()方法调用?

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

import java.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。

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

 

由于getClass()在Object类中定义成了final,子类不能覆盖该方法,所以,在test方法中调用getClass().getName()方法,其实就是在调用从父类继承的getClass()方法,等效于调用super.getClass().getName()方法,所以,super.getClass().getName()方法返回的也应该是Test。

如果想得到父类的名称,调用:getClass().getSuperClass().getName();



文章来自www.wityx.com,转载请注明出处!原文地址http://www.wityx.com/post/76_1_1.html

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

java面试题网www.wuliaokankan.cnjava建站系统提供技术支持V2.1 网站地图 © 2016-2018