小白求教:给的值不同,但最后显示相同,为什么。。

来源:9-9 Java 中的 Object 类 Ⅱ

慕工程6574893

2019-04-07 20:47

https://img.mukewang.com/5ca9f0f40001857c07390536.jpg

https://img4.mukewang.com/5ca9f0f40001005905110330.jpg

https://img2.mukewang.com/5ca9f0f40001eb5707370544.jpg

b1 和b2的速度一个是15,一个是30,输出时显示也是不相等的,但用equals比较时怎么相等。。小白求教各位~



写回答 关注

7回答

  • 幕布斯5352958
    2019-05-28 16:03:28

    你对equals重载的时候是在子类重载的,而你用equals比较b1和b2对象是比较的父类Transport的对象,所以你的重载就像是对他没用,equals还是比较的是b1和b2的引用地址

    慕粉1039...

    那么问题来了,为什么b1和b2的引用地址是相同的?

    2020-03-05 11:47:37

    共 1 条回复 >

  • 悦然无殇
    2019-05-23 18:23:06

    根据一楼,我觉得是不是应该改成:

    Bicycle b1=new Bicycle();

    Bicycle b2=new Bicycle();

    慕粉1039... 回复慕粉1039...

    不过改了以后可以解决这个问题

    2020-03-05 12:23:06

    共 2 条回复 >

  • qq_我的小龙女你在哪里_03471736
    2019-04-13 19:31:42

    https://img.mukewang.com/5cb1c1e300013bc003150041.jpg这种命名方法调用属性是调用父类属性,调用方法是调用子类方法

    https://img1.mukewang.com/5cb1c241000151bb01460031.jpg所以这里就相当于给父类的属性赋值了,输出结果就是15和30


    https://img2.mukewang.com/5cb1c83d0001db6c03840059.jpg然后这里是用的子类里的equals方法,使用的Bicycle里的speed属性的值,都是10,所以输出结果是"="


    慕粉1039... 回复黑皮磊

    可以在父类中重写equals方法,把子类中的equals方法删掉。 或者把第七行的int speed;去掉

    2020-03-05 12:31:09

    共 2 条回复 >

  • qq_慕田峪9072227
    2019-04-09 17:22:31

    你应该比较b1.speed和b2.speed的值吧 你那b1和b2都没有返回参数

    慕粉1039...

    重写的equals方法里比较了

    2020-03-05 11:55:52

    共 1 条回复 >

  • 刘小萌1
    2019-04-09 15:42:07

    声明是父类  equals时用子类属性比较 被初始化了 

  • 三年不见丶
    2019-04-08 13:15:01

    构造方法赋给speed值,构造方法又比属性初始化晚,所以两个对象的speed的值都为10

    慕粉1039...

    后面还有b1.speed=15;b2.speed=30;

    2020-03-05 12:14:43

    共 1 条回复 >

  • qq_小破城_0
    2019-04-07 21:08:05

    b1,b2不是值

Java入门第二季 升级版

课程升级!以终为始告别枯燥,在开发和重构中体会Java面向对象编程的奥妙

530553 学习 · 6091 问题

查看课程

相似问题