黑马程序员技术交流社区
标题:
下面程序为什么输出Test
[打印本页]
作者:
一直很安静
时间:
2013-11-22 19:42
标题:
下面程序为什么输出Test
public class Test extends Date{public static void main (String[] args){new Test().test();}public void test(){System.out.println (super.getClass().getName());}}看到解释说由于getClass方法在object 中定义成了final 所以子类不能覆盖,test方法中调用getClass().getName()其实就是在调用从父类中继承的。既然是这样为什么输出的不是父类名呢?
作者:
零下五度的水
时间:
2013-11-22 19:57
只有对象才能调用getClass方法,
你不会以为实例一个子类会帮你顺带新弄一个父类的实例吧
那你要是整一个十几层继承的得让虚拟机给你准备多少空间啊
作者:
樊志伟
时间:
2013-11-22 22:54
getClass 方法返回的是运行时类的Class对象。此时运行的是Test类,返回的就是Test类的Class对象,所以getName时就得到了“Test”。你的这个问题里将super改成this,它得到的结果还是“Test”。
作者:
likeermei
时间:
2013-11-23 15:44
因为子类创建的对象,调用getClass方法。说以会输出子类的类名,如果创建父类的对象调用。。会输出父类的类名
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2