public boolean equals(Object otherObject){
if(this==otherObject)//首先判断是不是引用同一个对象
return true;
if(otherObject==null)//判断otherObject是不是null
return false;
if(getClass()!=otherObject.getClass())//判断是不是属于相同的类
return false;
Employee other=(Employee) otherObject;//强制类型转换
return name.equals(other.name)&&salary==other.salary&&hireDay.equals(other.hireDay);//注意此行
}
   假设有一个Employee类,它有name,salary,hireDay三个private实例域。看上面的equals方法,最后一行怎么能用other.name  , other.salary直接访问other对象的实例域???

解决方案 »

  1.   

    《core java》上看来的,能通过编译。望高手指点。
      

  2.   

    name.equals(other.name)&&salary==other.salary&&hireDay.equals(other.hireDay)&& == && f分开看吧,马上就理解了。
      

  3.   

    public boolean equals(Object otherObject)
    应该是Employee类自己重写Object的equals方法吧,
    private难道可以限制自己访问自己的属性吗?
      

  4.   

    当然可以了,equals方法不就是在Employee类里定义的,当然看得到Employee类的私有成员
      

  5.   

    但是other是个Employee类的对象,那岂不是说另外的一个Employee类对象,假设staff吧,可以访问other的私有实例域。比如:staff.setName(other.name);???这样可以么?
      

  6.   

    可以直接跟你说吧,
    在A类中,访问A类对象是可以直接访问私有成员的,原理和C++的友元类是一个道理的。
      

  7.   

    大家快看! java中的一个封装漏洞!
    答: 呵呵... :)
      

  8.   

    那现在有个Manager类的对象other,比如有个方法这样:
        public void method(Object aManager){
            other=(Manager) aManager;
            this.setName(other.name);
        }
    这样就不可以了是吧?小弟学术不精,望指点。
      

  9.   

    看这个方法在哪里,如果在Manager类中是可以访问的,你先看看书,搞清楚修饰符的作用域
      

  10.   

    刚才试了一下, 
         public void method(Object aManager){ 
            other=(Manager) aManager; 
            this.setName(other.name); 
        } 假设method是一个Employee类的方法,那么上面的代码不能通过。提示other.name在Employee类中不可视。
    谢谢各位大哥,发分,分虽不多,意思意思就行了。