猿问

原程序如下,里面的personObj,(person)obj各是什么含义?

class Person
{
private String name;
private String idStr;
public Person(){}
public Person(String name , String idStr)
{
this.name = name;
this.idStr = idStr;
}
//下面是name和idStr的setter和getter方法。
public void setName(String name)
{
this.name = name;
}
public String getName()
{
return this.name;
}

public void setIdStr(String idStr)
{
this.idStr = idStr;
}
public String getIdStr()
{
return this.idStr;
}
// //重写equals方法,提供自定义的相等标准
// public boolean equals(Object obj)
// {
// //只有当obj是Person对象
// if (obj != null && obj instanceof Person)
// {
// Person personObj = (Person)obj;
// //并且当前对象的idStr与obj对象的idStr相等才可判断两个对象相等
// if (this.getIdStr().equals(personObj.getIdStr()))
// {
// return true;
// }
// }
// return false;
// }

//重写equals方法,提供自定义的相等标准
public boolean equals(Object obj)
{
//待比较的两个对象是同一个对象,直接返回true
if(this == obj)
{
return true;
}
//只有当obj是Person对象
if (obj != null && obj.getClass() == Person.class)
{
Person personObj = (Person)obj;
//并且当前对象的idStr与obj对象的idStr相等才可判断两个对象相等
if (this.getIdStr().equals(personObj.getIdStr()))
{
return true;
}
}
return false;
}

}
public class OverrideEqualsRight
{
public static void main(String[] args)
{
Person p1 = new Person("孙悟空" , "12343433433");
Person p2 = new Person("孙行者" , "12343433433");
Person p3 = new Person("孙悟饭" , "99933433");
//p1和p2的idStr相等,所以输出true
System.out.println("p1和p2是否相等?" + p1.equals(p2));
//p2和p3的idStr不相等,所以输出false
System.out.println("p2和p3是否相等?" + p2.equals(p3));
}
}

Qyouu
浏览 192回答 2
2回答

撒科打诨

personObj,是Person对象的一个引用,它可以调用一切Person对象中可以调用的方法!当然必须有访问权限!(person)obj 是强制转换,就是将obj类型强制转换成Person类型

慕森卡

{ // Person personObj = (Person)obj; // //并且当前对象的idStr与obj} !那不是很简单 !~!?~问题
随时随地看视频慕课网APP
我要回答