黑马程序员技术交流社区

标题: 结果是Test 为什么不是Date??? [打印本页]

作者: 张志明    时间: 2014-2-7 10:00
标题: 结果是Test 为什么不是Date???
  1. importjava.util.Date;
  2. public classTestextends Date{
  3.     public static voidmain(String[] args) {
  4.        new Test().test();
  5.     }
  6.    
  7.     public void test(){
  8.        System.out.println(super.getClass().getName());
  9.     }
  10. }
复制代码

很奇怪,结果是Test     为什么呢???





为进黑马努力每一天~!!!!!面试已过
作者: 淡夜清风    时间: 2014-2-7 11:05
  new Test().test();是使用匿名内部类调用test方法,就相当于Test的子类来调用test方法。
当前对象就是Test的子类对象。也就是this代表Test的子类对象。所以super就代表Test对象了。
因此super.getClass().getName()最后得到的结果是Test

作者: 自由自在2014    时间: 2014-2-7 17:00
        public void test(){
               System.out.println((this.getClass().getSuperclass().getName()));
            }
结果是:java.util.Date





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