在一个类中,该类的方法可以访问这个类的所有字段,包括私有字段。这一点是显而易见的。换句话说,类的方法可以访问隐式参数的私有字段,(隐式参数是指this).
class Persion {
private String name;
public Persion(String n) {
this.name = n;
}
// 方法可以访问这个类的私有字段
public String getName() {
return this.name;
}
}
// 但是在外面定义的对象不可以访问私有字段。
Persion xiaoming = new Persion("xiaoming");
xiaoming.name; // 这是错误的。
但是,值得注意的是,类的方法不仅可以访问隐式参数的私有字段,还可以访问该方法所属类的所有对象的私有字段。即在方法内部,通过对象去调用私有字段也是合法的。
class Persion {
private String name;
public Persion(String n) {
name = n;
}
// 方法可以访问这个类的私有字段
public String getName() {
return name;
}
// 举例
public boolean equals(Persion other) {
// 重点就在于other.name, 这一句是合法的,不管是this.name 还是 other.name ,只要在类的方法内部都是可以的
return this.name.equals(other.name);
}
}