super 的一个小的问题 希望得到确认 Java核心技术卷 一

图片说明

在主函数中,有语句

System.out.println("carl.equals(boss): " + carl.equals(boss));

也就是说 carl.equals(boss), 到manager函数中有

  public boolean equals(Object otherObject)
   {
      if (!super.equals(otherObject)) return false;
      Manager other = (Manager) otherObject;
      // super.equals checked that this and other belong to the same class
      return bonus == other.bonus;
   }

这个super是调用父类中的方法,也就是说carl和boss先调用父类中的这个方法进行比较,这个是对的吗?

2个回答

也就是说carl和boss先调用父类中的这个方法进行比较,这个是对的吗?
答:是的,

kbc_kbc
kbc_kbc 回复kbc_kbc: 而且也不需要再判断是不是同一个类这种问题,因为父类都做了这方面的工作了,子类直接调用就好。这就是继承的思想。代码复用。拒绝重复代码
2 年多之前 回复
kbc_kbc
kbc_kbc 因为子类多一个奖金属性,所以子类再次重写equals方法没必要写父类的属性比较,直接调用,如果父类方法没问题就比较子类特有的属性:bonus
2 年多之前 回复

if (!super.equals(otherObject)) return false;

这代码可能是为了比较 super和otherObject是不是一个类,,,可以说是先做一个筛选,,,
先跟父类比一下,缩小范围吧(里氏代换原则,子类可以出现的地方,父类都可以)

可以这样用,,

Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
立即提问