Cho*_*hop 3 java equals object
假设我要覆盖Object的equals()方法:
public boolean equals(Object o){
//something
}
public boolean equals(SomeClass s){
//something else
}
Run Code Online (Sandbox Code Playgroud)
SomeClass显然也是一个Object,如果我使用带有SomeClass实例的equals作为参数,那么将调用哪个方法?
这不是压倒性的,它正在超载.如果你这样做,你将最终得到两个equals方法:一个将被调用(子类的)子SomeClass实例,一个用于任何其他对象.
需要注意的一点是,方法绑定将是静态的:编译器将根据引用的声明类型决定调用哪一个.因此,以下将调用equals(Object),而不是equals(SomeClass):
Object o = new SomeClass();
o.equals(o); // invokes SomeClass.equals(Object)
Run Code Online (Sandbox Code Playgroud)