分类：电脑/网络-程序设计-JAVA相关
问题：java不大理解equals方法的重写，求助一个Name类有fi 
一个Name类有firstName和lastName连个成员变量，该类重写的equals方法如下:puic boolean equals(Object obj) {if(obj instanceof Name) {Name name = (Name)Obj; // Areturn(firstName.equals(name.firstName))&&(lastName.equals(name.lastName));}return super.equals(obj);}A句中传进来的obj既然已经是Name一个Name类有firstName和lastName连个成员变量，该类重写的equals方法如下:puic boolean equals(Object obj) {if(obj instanceof Name) {Name name = (Name)Obj; // Areturn(firstName.equals(name.firstName))&&(lastName.equals(name.lastName));}return super.equals(obj);}A句中传进来的obj既然已经是Name的实例了，为什么还要强制转换成Name类的对象？这句话多余么?
回答：不多余，obj instanceof Name 只是说明：obj 是Name 的一个实例，但是这个实例也可能是Name 子类的实例，这样obj instanceof Name 的返回值也是true ，所以为了程序的严密性，要把Obj强制转化为Name类，就象：B b=new b(); A a=(A)b;//B是A的子类。
因此Name name = (Name)Obj; 是防止obj 是Name的子类