好的,假设您有两个课程:ClassA
和ClassB
ClassA
延伸Object
和ClassB
延伸ClassA
ClassA
没有参数构造函数ClassB
有一个整数变量 x 和一个带有初始化 x 的整数参数的构造函数ClassA
不会覆盖equals
它继承自Object
ClassB
覆盖equals
,以便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 字段相同。
我缺少什么似乎是“错误的”?