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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 郑昌奋 中级黑马   /  2013-3-14 13:15  /  1712 人查看  /  7 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

public  class Test extends Date{
        public static void main(String[] args) {
                new Test().test();
        }
        
        public void test(){
                System.out.println(super.getClass().getName());
        }
}
这个输出的为什么是Test啊 而不是Date呢,如果想得到Date怎么实现

点评

如果问题已经解决了,请将分类改为已解决,谢谢  发表于 2013-3-15 08:28

7 个回复

倒序浏览
下次多贴点代码,方便别人阅读,谢谢
回复 使用道具 举报
        System.out.println(super.getClass().getSuperclass());

这样试试。。
回复 使用道具 举报
  1. public  class Test extends Date{
  2.         public static void main(String[] args) {
  3.                 new Test().test();
  4.         }
  5.         
  6.         public void test(){
  7.                 System.out.println(super.getClass().getName());
  8.         }
  9. }
复制代码
你声明了一个子类的对象,但是在test方法中,却用了super,当然是代表父类的对象,然后获取类名,也当然是得到父类的名字。
super换成this试试~

评分

参与人数 1技术分 +1 收起 理由
黄玉昆 + 1 赞一个!

查看全部评分

回复 使用道具 举报
楼主如果有问题请继续追问,无问题,请结贴,否则扣除技术分。
回复 使用道具 举报
从API里面可知道,getClass()方法是Object里面的方法,然而Object是所有类的父类。
getClass()返回此 Object 的运行时类。当new Test()的时候,运行时类,不可能是他的父类
Date,更不可能是Date的父类Object,所以super.getClass().getName()返回的只可以是JavaIO.Test。
如果你想要返回Date.class,应该这样调用Test.getClass().getSuperClass()。
具体代码:
  1. import java.util.Date;

  2. public class Test extends Date{
  3. public static void main(String[] args) {
  4. new Test().test();
  5. }

  6. public void test(){
  7. System.out.println(this.getClass().getSuperclass());
  8. // System.out.println(super.getClass().getName());Test.getClass().getSuperClass()
  9. }
  10. }
复制代码
回复 使用道具 举报
不回答了,我勒个去,噼里啪啦打了一大堆总结,突然页面被关了,气死了。不说了。
回复 使用道具 举报
System.out.println(super.getClass().getSuperclass().getName());
打印:
java.util.Date
super不代表父类对象,this代表可以代表本类对象。如下例子:
lass Demo10
{
        public static void main(String[] args)
        {
                Son f=new Son();

                f.method();
        }
}

class Father
{
        public void show(){
               
                System.out.println("father show");
        }
}

class Son extends Father
{

        public void method(){
               
                Tools.print(super);//编译失败,而当参数为this时,编译通过程序运行。
        }

        public void show(){
               
                System.out.println("son show");
        }
}

class Tools
{
        public static void print(Father f){
                f.show();
        }
}
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马