让我们说在java中我有一个A类和一个B类,它扩展了A。
注意:A类和B类不在其中有一个等号方法!
我做:
A a = new B();
B b = new B();
a.equals(b);
它出错了。我想当我们做的时候它等于它动态地限制在a和b,这将使它成为现实。或者是因为在编译时它看a并且假定equals将等于(A)并且因为它的B是B b = new B();它说假?或者我在两个方面都错了?
答案 0 :(得分:4)
由于您未覆盖equals
,因此会使用Object
的方法
如果你看一下Object
的源代码 @param obj the reference object with which to compare.
public boolean equals(Object obj) {
return (this == obj);
}
显然a
对b
有不同的引用false