public class Name {
private String first, last;
public Name(String first, String last) {
if (first == null || last == null)
throw new NullPointerException();
this.first = first;
this.last = last;
}
// 访问权限 子类要大于或等于父类
// 返回类型 如果是原生类型 子类与父类保持一致
// 如果是对象类型 子类的返回类型可以是父类的派生类
// 方法参数 子类要保证和父类的顺序,数量,类型相同
public boolean equals(Name o) {
return first.equals(o.first) && last.equals(o.last);
}
public int hashCode() {
return 31 * first.hashCode() + last.hashCode();
}
public static void main(String[] args) {
Set s = new HashSet();
s.add(new Name("Mickey", "Mouse"));
System.out.println(s.contains(new Name("Mickey", "Mouse")));
}
}
正确写法为:
public boolean equals(Object obj) {
Name o = (Name)obj;
return first.equals(o.first) && last.equals(o.last);
}