没有人能真正理解protected修饰符吗

解决方案 »

  1.   

    1:在main中没有new一个instance,当然不能引用x,即使是你在children中定义了public int x;你也同样引用不到。
    2:new出了一个父类的instance,但你忘了,在父类中,x是protected的,你不能直接引用,如果你在父类中写了public getX()的方法,在这里可以引用。
      

  2.   

    书上还说,使用protected有些限制,具体
    這是 JLS 的規定,請參閱 JLS 第六章第六節
    http://java.sun.com/docs/books/jls/second_edition/html/names.doc.html#104285
    但是english,头大!
      

  3.   

    System.out.println("x is"+ x);
      Parent P=new Parent();
     // P.x=6;
      System.out.println("X is"+ P.y);
      
       System.out.println("X is"+ P.x); //这里是编译不过的
      }
      

  4.   

    看书说,在默认的级别里,访问权限就是包权限,而定义为protected的成员当不同包中的子类继承访问的的时候,仍然有效。但如果是子类通过父类实例的引用,却不可以。=========================================================这句话已经说的很清楚了,自类直接访问父类中的protected 变量是可以的,
    如果实例化后,和在别的不同包中的类中实例化一样,是访问不到protected 变量的。