A method in a subclass overrides a method in a superclass only if the parameters are of the same type.
Object equals():
class Object {
public boolean equals(Object obj) {...}
}
A, equals Object. equals, , Object; . A equals:
class A {
public boolean equals(Object obj) {...}
public boolean equals(A other) {...}
}
, equals in B equals, equals:
class B {
public boolean equals(Object obj) {...}
public boolean equals(A other) {...}
public boolean equals(B other) {...}
}
C equals Object, equals:
class C {
public boolean equals(Object other) {...}
public boolean equals(A other) {...}
public boolean equals(B other) {...}
}
:
A a = new A();
C c = new C();
a=c;
System.out.println(a.equals(c));
a.equals(c), , A A. A, , . ( , A C , C.)
, :
public boolean equals(Object obj) {...}
public boolean equals(A other) {...}
C, C Object, A. , , "". C A, Object, A, , A. , equals . , , A.
, :
System.out.println(a.equals((Object)c));
C Object, Object. , , Object, Object A ( Object A). , . C, C equals, Object, , C.
- , . , , equals(), - , Object, , . , @Override , , , . , goof , , , .