package testClass;
//面向对象设计的一大特点就是封装
//规范的程序会把类中的属性隐藏,但是留出访问方式。
public class PrivatePerson{
private String name;//private关键字确保属性只能在类中访问
private int age;
public PrivatePerson(String name, int age) {
this.name = name;
this.age = age;
}
//为了在外部程序访问和修改属性,提供setter和getter
//alt+insert可以自动生成setter和getter
public void setName(String name){
this.name = name;
}
public void setage(int age){
this.age = age;
}
public String getName(){
return this.name;
}
public int getAge(){
return this.age;
}
//对象的比较非常重要,String类有equals方法来比较不同对象是否相同
//编写一个对象比较函数
public boolean compare(PrivatePerson person){
if(person == null)return false;//防止NullPointerException
if(this == person)return true;//如果引用对象和本对象地址相同,不用进行具体的判断了
if(this.name.equals(person.name)&&this.age == person.age) return true;//如果各项属性都相同,返回true
/*如果类的属性采用了private封装,那么在类的外部不能通过对象直接调用该属性。
但是如果将一个对象传递回类的方法里,相当于取消了封装,可以直接通过对象访问属性
所以上面不用写成this.name.equals(person.getName())&&this.age == person.getAge;*/
else return false;
}
}
通常把属性封装,但是留出方法来调用和修改属性。有以下几种权限修饰符: