ClassA
では、次の 2 つのクラスがあるとします。ClassB
ClassA
伸びObject
てClassB
伸びるClassA
ClassA
引数コンストラクターがありませんClassB
整数変数 x と、x を初期化する整数引数を持つコンストラクターを持つClassA
equals
継承していることをオーバーライドしませんObject
ClassB
整数 x が両方のオブジェクトで同じ値を持つ場合、 のequals
2 つのオブジェクトが等しいと見なされるようにオーバーライドします。ClassB
//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));
「false」が出力されると思いますが、その理由を理解しようとしています。オーバーライドの概念を完全には理解していないかもしれませんが、xフィールドが同じであることを確認できるように、メソッドB
をオーバーライドする必要があると考えました。Object.equals
私が見逃している「間違っている」と思われるものは何ですか?