黑马程序员技术交流社区

标题: 运行结果为什么是这个? [打印本页]

作者: 曾振华    时间: 2014-2-21 15:14
标题: 运行结果为什么是这个?
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());
}

}


运行结果看不懂啊
作者: 松涛小玮    时间: 2014-2-21 15:57

getClass
public final Class<?> getClass()返回此 Object 的运行时类。返回的 Class 对象是由所表示类的 static synchronized 方法锁定的对象。
查阅api文档发现  
Test中的getclass方法实际调用父类Date中的方法 但Date这里的getClass方法 实际上还是上帝Object类中方法  该方法没被Date复写  也不能复写
作者: 松涛小玮    时间: 2014-2-21 16:00
返回此时Object的运行时类,此时是Test运行的,所以结果为Test
作者: 徐芾清    时间: 2014-2-22 10:46
API文档:
getClass()返回一个对象的运行时类。
要想弄白会返回什么就要弄明白什么运行时类这个概念究竟指的是什么。
运行时类是指:能在运行时检测,操作对象的类。
new Test().test();
注意你new的是Test()对象,能够检测,操作该对象的类自然是Test类,返回的也就是Test




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2