今天看core java,在接口那章遇到一个关于compareTo()方法的一个问题。是有关类实域权限的问题。
    以下代码是书上245页(卷1,英文版)那个Employee类。我省去了部分跟问题不相关的内容。
class Employee implements comparable<Employee> {    private double salary;
    
    public int compareTo(Employee other) {        if(salary < other.salary ) return -1;
        if(salary > other.salary ) return 1;
        
        return 0;
    }
}
    我想不通的是salary在Employee类中被声明为private. 
    既然这样,为什么在compareTo方法中还可以直接调用other对象的salary和 本类中的salary做比较?
    一个类中得private域不是只能被这个类中的方法调用吗?
   我在equals方法中也发现同样的问题。
    小弟java初学者,小小问题百思不得其解,望高手答疑。

解决方案 »

  1.   

    salary能被访问是因为
    1.它是Employee的成员(不管是哪个Employee)
    2.它在Employee内部
      

  2.   

    从前 有个Employee名叫e1 它有一个salary
    有一天 在他的方法compareTo里 来了另外一个Employee名叫e2
    e1想 既然e2也是Employee 我有salary 那她一定也有salary
    于是e1就叫e2的拿她的salary和自己的比比
      

  3.   

        呵呵。 有点明白了。去翻了一下《thinking in java》.
        原文说:关键字Private的意思是,除了包含该成员的类之外,其他任何类读无法访问这个成员。
         小看private了,还有这层意思。
         我就结贴把分给你了。
         中秋快乐!