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 , , , .