publicclassPersons{privateStringname;privateintage;publicPersons(Stringname,intage){this.setName(name);this.setAge(age);}publicbooleancompare(Personsper){Personsp1=this;P...
public class Persons {
private String name;
private int age;
public Persons(String name,int age){
this.setName(name);
this.setAge(age);
}
public boolean compare(Persons per){
Persons p1=this;
Persons p2=per;
if(p1==p2){//比较两个地址是否相等
return true;
}
//分别判断每一个属性是否相等
if(p1.name.equals(p2.name) && p1.age==p2.age){
return true;
}else{
return false;
}
}
public String getName(){
return name;
}
public void setName(String n){
name=n;
}
public int getAge(){
return age;
}
public void setAge(int a){
age=a;
}
}
/*======================这上面是Persons类里面有compare方法进行类的比较================================*/
/*==============这下面是入口==================*/
public class test_per {
/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
Persons p1=new Persons("张三",22);
Persons p2=new Persons("张三",22);
boolean b=p1.compare(p2);
if(b){
System.out.println("相等");
}else{
System.out.println("不相等");
}
}
}
/*================下面是问题======================*/
问题是:persons类里面的compare方法里面进行p1.name和p2.name的方法进行比较的时候,p1.name直接调用没有疑问,因为调用的是本对象里面的私有属性。但是为什么p2.name也能直接调用呢?p2是另外一个对象啊,它不得通过getName()方法调用自身对象的name属性吗?对这里搞不懂,还请高手解答。同理还有age属性的调用也是。
展开