假设存在一个Employee的超类,和一个Manager的子类,有如下定义:
Employee e = new Employee();
Manager m = new Manager();
1、在这里,这两个对象都具有相同的姓名,薪水等信息,那么调用e.equals(m),返回的是true还是false呢?
2、另外equals这个方法具有对称性,也就是说,对于任何非空引用x和y,如果x.equals(y)返回true,则y.equals(x)也返回true。
那么在这个例子中,如果调用m.equals(e)的话,返回的是true还是false呢?
3、还有就是,是不是对于两个对象不属于同一个类,就一定不相等?
4、如果有一个程序,是需要删除两个一模一样的对象,那么要怎么比较才最有效率,最完美的比较方法怎么定义才能更好地实现这个程序?
在此向大家求解,希望有详细解答,谢谢。
public class Person{
private String name;
public Person(String name)
{
this.name=name;
}
public boolean equals(Object o)
{
if (this==0) return true;
if (!o instanceof Person) return false;
final Person other=(Person)o;
if (this.name().equals(other.name()))
return true;
else
return false;
}