класс А { }
класс B расширяет A { }
Объект o1 = новый A();
Объект o2 = новый B();
o1 экземпляр A => true
o1 экземпляр B => ложь
o2 экземпляр A => true // <================ ЗДЕСЬ
o2 экземпляр B => true
o1.getClass().equals(A.class) => true
o1.getClass().equals(B.class) => false
o2.getClass().equals(A.class) => false // <=============== ЗДЕСЬ
o2.getClass().equals(B.class) => true
getClass() будет полезен, если вы хотите убедиться, что ваш экземпляр НЕ является подклассом класса, с которым вы сравниваете.
一个非常完美的равно方法的写法:
// должен возвращать false, если явный параметр равен нулю
если (otherObject == null) вернуть false;
// если классы не совпадают, они не могут быть равными
if (getClass() !=otherObject.getClass()) возвращает false;
// теперь мы знаем, что OtherObject является ненулевым сотрудником
Другой сотрудник = (Сотрудник) другойОбъект;
// проверяем, имеют ли поля одинаковые значения
return name.equals(other.name) && зарплата == Other.salary && HireDay.equals(other.hireDay);
}