我试了一下,好像就是包访问权限?
包外继承该类的类好像也不能访问protected成员?

解决方案 »

  1.   

    protect方法只有子类可以访问
    准确点说应该是子实例可以访问(就是通过super或者this或者直接调用)
      

  2.   

    不对啊,java中处于同一包中的其他类也可以访问protected成员啊,好像protected就是包访问权限。
      

  3.   

    这是我的源码:
    Test1.java
    package mypackage;
    import java.util.*;
    import java.lang.reflect.*;
    public class Test1{
    protected void protectedint(){
    System.out.println("proectedint");
    }
    }Test2.java
    package mypackage2;import mypackage.*;
    public class test2  extends Test1{
    public static void main(String[] arg){
    TestArrayList t1 =  new TestArrayList();
    t1.protectedint();//不能访问
    }
             public void readprotected(){
                      protectedint();//这样访问就可以。
             }
    }运行的时候出错:
    Exception in thread "main" java.lang.Error: Unresolved compilation problem: 
    The method protectedint() from the type TestArrayList is not visible难道不能在static函数里面访问protected成员吗?
    如果在非static成员里访问就可以。
      

  4.   

    看看我1楼的回答
    protected不但是只允许子类访问,而且必须是统一个实例的
    A extends B
    那么A的方法里只能通过super或者this来访问B的protect方法,而不可以new一个B来访问
      

  5.   

    privte :只用本类可用
    protected :同包内均可用
    public :全部可用
      

  6.   

    TestArrayList t1 =  new TestArrayList();这是根据什么类来构造对象的啊??
    怎么上面看不到这个类啊
    应该这样就会可以吧:
    test2 t1=new text();
    t1.protectedint();
    你看看吧
    这样应该就能访问了
    自己试试吧
    你题目给的分好低哦
    记得多给姐姐一点点哦
      

  7.   

    to: yangchengqin(杨成琴)
    如果不在同一个包内,是不能访问的。
      

  8.   

    比默认friendly的多一个子类权限
      

  9.   

    不同包中的扩展类可见!把上面朋友的程序稍做改动://Test1.javapackage mypackage;
    public class Package1{protected void protectedint(){
         System.out.println("protected类成员在不同包中对扩展类可见");
      
      }}//Test2.javapackage mypackage2;import mypackage.*;
    public class Package2  extends Package1 {   public static void main(String[] arg){   Package2  t1 =  new Package2 ();   t1.protectedint();//不能访问
       t1.readprotected();}
       public void readprotected(){
                      
          protectedint();//这样访问就可以
       }
     
    }执行结果:protected类成员在不同包中对扩展类可见
              protected类成员在不同包中对扩展类可见不知说的是否清楚?
      

  10.   

    “面向对象的封装并非保护你的秘密,而是防止被错误使用,是为了明确划分问题的界限。
    就“保护”这个词而言,更进一步的讲,它并非对使用该对象的用户(下面称为用户)做出使用某个成员的授权,而是对延展该类的设计人员(下面称为设计人员)做出延展问题领域的授权。
    受保护成员容许在派生类当中被使用,但不允许使用本类对象的用户代码直接使用。实际上是对设计人员的有限度授权,和对用户的拒绝授权。”在子类中你可以直接使用protectedint();
    比如上面的
    public void readprotected(){
          protectedint();
    }
    因为protected 成员对于子类可见。
    但是你不能通过实例化Package2 t1,来访问t1.protectedint(); 因为protected成员对于包外的类对象是不可见的。
    当然,对于在同一包中的类的对象是可见的。比如
    Test1.java
    package mypackage;
    import java.util.*;
    import java.lang.reflect.*;
    public class Test1{
    protected void protectedint(){
    System.out.println("proectedint");
    }
    public static void main(String[] args){
      Test1 t1 = new Test1();
      t1.protectedint();
    }
    }
      

  11.   

    protected 只有其之类实例和同包内的其他类实例可以访问
      

  12.   

    delphiwcdj() 说得我好像有点明白:)