为什么可比较的实现工作

ami*_*ngh 2 java oop

任何人都可以解释为什么下面的代码正在处理私有成员变量?

    public class Person implements Comparable<Person> {
    private String firstName;
    public Person(String firstName) {
        this.firstName = firstName;
        }

    @Override
    public int compareTo(Person o) {
        return firstName.compareToIgnoreCase(o.firstName);  // why does it work?    }    }
    }
}
Run Code Online (Sandbox Code Playgroud)

编辑为什么o.firstName要编译?其中firstName是private可变的.

Ale*_*lov 12

访问修饰符控制每个类而不是每个实例的访问.因此,类的方法T可以访问其他类T实例的所有成员(甚至私有).

来自JLS 7访问控制链接为好奇.它说,"请注意,可访问性是一个静态属性,可以在编译时确定;它只取决于类型和声明修饰符."