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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 迷失的小Z 中级黑马   /  2014-12-20 22:58  /  1742 人查看  /  9 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

class A
{
}
class B extends A
{
      public void demo()
      {
             System.out.println(this.hashCode());
             System.out.println(super.hashCode());
      }
}
class Test
{
      public static void main(String[] args)
      {
            B b = new B();
            b.demo();
      }
}
为毛俩值一样,一直没想通……

评分

参与人数 1技术分 +1 收起 理由
杨佳名 + 1

查看全部评分

9 个回复

倒序浏览
挺好的   赞一个
回复 使用道具 举报
求牛人回答……
回复 使用道具 举报
super 和this  都只是引用

不可以代表对象,这句话切记。

老夫留一段代码,你调试几遍即可理解,

  1. class A
  2. {
  3.         String name;
  4.         A(String name)
  5.         {
  6.                 this.name=name;
  7.         }
  8. }
  9. class B extends A
  10. {
  11.        B(String name)
  12.        {
  13.                super(name);
  14.        }

  15.         public void demo()
  16.        {
  17.               System.out.println(this.toString());
  18.               System.out.println(super.toString());
  19.               System.out.println(new A("nihao").toString());
  20.        }
  21. }
  22. class Test
  23. {
  24.        public static void main(String[] args)
  25.        {
  26.              B b = new B("haha");
  27.              b.demo();
  28.              System.out.println(b);
  29.              A a=new A("nihao");
  30.              System.out.println(a);
  31.        }
  32. }
复制代码

评分

参与人数 1技术分 +1 收起 理由
杨佳名 + 1

查看全部评分

回复 使用道具 举报
我也不太明白这个问题,不知道这样理解对不对。
因为父类没有实例化,所以并没有在堆内存中产生,所以堆内存中的地址还是子类的,只不过子类中有一个区域,是父类的内容。
这样对吗?
回复 使用道具 举报
不懂帮顶!!!
回复 使用道具 举报
本帖最后由 lwh316658735 于 2014-12-21 19:09 编辑

这样和你说吧,hashCode()方法只针对哈希表才有作用。
如果用hashcode方法来比较自定义类,一定要覆盖hashCode方法才能起作用,不然他是不知道要怎么去比。
回复 使用道具 举报
lwh316658735 发表于 2014-12-21 19:07
这样和你说吧,hashCode()方法只针对哈希表才有作用。
如果用hashcode方法来比较自定义类,一定要覆盖hashC ...

你没看明白……我问的是关于对象在堆内存中的问题……
回复 使用道具 举报
本帖最后由 赵越海 于 2016-7-8 17:35 编辑

         .
回复 使用道具 举报
本帖最后由 赵越海 于 2016-7-8 17:35 编辑

         .
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马