这一次主要是对上次的类型安全做了改进,equals(Object obj)能够接受任何类型的参数,所以假设客服端不小心弄错了,没有像该函数传入Person对象,那就会造成ClassCastException
class Person{
private String name;
private int age;
public Person(String name,int age){
this.name=name;
this.age=age;
}
public boolean equals(Object obj){
if(!(obj instanceof Person))
return false;
Person per1=this;
Person per2=(Person) obj;
boolean flag=false;
if(per1==per2)
return true;
else{
if(per1.name.equals(per2.name)&&per1.age==per2.age)
flag=true;
}
return flag;
}
public String toString(){
return "姓名:"+name+"/t年龄:"+age;
}
}
public class OODemo03{
public static void main(String[]args){
Person p1=new Person("C++",30);
Person p2=p1;
System.out.println(p1);
System.out.println(p2);
String out=p1.equals(p2) ? "p1和p2是同一个人":"p1和p2不是同一个人";
System.out.println(out);
}
}