行,所以让我们说,你有两个类:ClassA
和ClassB
重写Object类平等法
ClassA
延伸Object
和ClassB
延伸ClassA
ClassA
无参数的构造函数ClassB
有整数变量x和带初始化整数参数的构造函数xClassA
不会覆盖equals
,它的从Object
ClassB
覆盖equals
inhering,这样的ClassB
两个对象被认为是相同的,当整数x有两个对象相同的值。//In Class B you have this method: public boolean equals (Object obj) { if (obj == null) { return false; } if (obj.getClass() != this.getClass()) { return false; } if (!super.equals(obj)) { return false; } B b = (B) obj; return this.x == b.x; }
在主如果你运行该代码
B b1 = new B(1);
B b2 = new B(1);
System.out.println(b1.equals(b2));
我相信“假”将被打印,但我想知道为什么。也许我没有完全理解重写的概念,但我只是想从B
应该重写Object.equals
方法,所以它可以确保x字段是相同的。
什么似乎是我错过的“错误”?
如果你正在返回'super.equals()'返回的值,重写'equals'有什么意义? –
1)对代码块使用一致的逻辑缩进。代码的缩进旨在帮助人们理解程序流程。 2)为了更快地获得更好的帮助,请发布[SSCCE](http://sscce.org/)。 –