是在类级别还是在对象级别的私有(private)成员访问权限。如果是在对象级别,则以下代码不应编译

    class PrivateMember {
   private int i;
   public PrivateMember() {
      i = 2;
   }
   public void printI() {
      System.out.println("i is: "+i);
   }
   public void messWithI(PrivateMember t) {
      t.i *= 2;
   }
   public static void main (String args[]) {
      PrivateMember sub = new PrivateMember();
      PrivateMember obj = new PrivateMember();
      obj.printI();
      sub.messWithI(obj);
      obj.printI();
   }
}

请说明在sub的messWithI()方法中访问obj的成员i是否有效

最佳答案

正如DevSolar所说的,它处于(顶级)类级别。

section 6.6 of the Java Language Specification:



请注意,没有迹象表明它仅限于特定对象的成员。

从Java 7开始,the compiler no longer allows access to private members of type variables。因此,如果该方法具有类似public <T extends PrivateMember> void messWithI(T t)的签名,则访问t.i将会是编译器错误。但是,那不会改变您的特定情况。

关于java - 私有(private)成员访问Java,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/676930/

10-09 06:26