A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 李鑫 初级黑马   /  2012-6-7 21:12  /  1780 人查看  /  4 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

我在昨天那个帖子中文的问题还是没有解决,到底应该是什么,答案什么也有,谁能告诉我最终的答案。。。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());
        }
}

评分

参与人数 1技术分 +1 收起 理由
赵志勇 + 1 ...

查看全部评分

4 个回复

正序浏览
刚在eclipse中看了一下源代码,确实跟二楼说的一样,Date并没有重写getClass()方法,而是调用的Object的getClass()方法;你可以直接按着Ctrl点击getClass()进行追宗,进入的是Object的此方法,也可以直接查看Date类的源代码。
回复 使用道具 举报
首先我们应该理解"super"关键字的用法。
  1,在子类构造函数中的第一句代码,用来显示调用父类的构造函数。
其余地方劝楼主不要用。要用就用父类的名字。
   
回复 使用道具 举报
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!!!

    }
}
回复 使用道具 举报
  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. }
复制代码
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马