黑马程序员技术交流社区

标题: 我真的很想知道答案 [打印本页]

作者: 李鑫    时间: 2012-6-7 21:12
标题: 我真的很想知道答案
我在昨天那个帖子中文的问题还是没有解决,到底应该是什么,答案什么也有,谁能告诉我最终的答案。。。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());
        }
}

作者: 葛奎    时间: 2012-6-7 21:30
  1. import java.util.Date;
  2. public  class Test extends Date{
  3.         public static void main(String[] args) {
  4.                 new Test().test();
  5.         }
  6.         
  7.         public void test(){
  8.                 System.out.println(super.getClass().getName());//getClass是Object类中的方法,返回此 Object 的运行时类,也就是Test
  9.         }
  10. }
复制代码

作者: Kristy_Li    时间: 2012-6-7 21:45
package example;

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());//在这里super.getClass()调用的是Test的父类Date的getClass()方法,但Date类没有重写此方法,因此最后还  是调用的Object中的getClass()方法,此方法返回Object的运行时类,所以我的程序输出为example.Test!!!

    }
}
作者: 雷云红    时间: 2012-6-7 21:57
首先我们应该理解"super"关键字的用法。
  1,在子类构造函数中的第一句代码,用来显示调用父类的构造函数。
其余地方劝楼主不要用。要用就用父类的名字。
   
作者: 王广丛    时间: 2012-6-7 22:51
刚在eclipse中看了一下源代码,确实跟二楼说的一样,Date并没有重写getClass()方法,而是调用的Object的getClass()方法;你可以直接按着Ctrl点击getClass()进行追宗,进入的是Object的此方法,也可以直接查看Date类的源代码。




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