行,所以讓我們說,你有兩個類: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/)。 –