java中的protacted权限和缺省(包)访问权限:
protacted权限支持继承访问和包访问权限
缺省权限支持包访问两者都不支持跨包访问,也就是说,A类有个protected方法f(),在同一个包里,不管其他类是不是继承自A类,
都可以访问f();在不同的包里,不管其他类是不是继承自A类,都无法访问f();那么两者的区别是什么????????????

解决方案 »

  1.   

    protacted权限支持继承访问和包访问权限(继承的时候可以跨包,即子类和父类不在同一包的时候可以访问。)
    缺省权限支持包访问
      

  2.   

    首先我想纠正一下:protected 修饰的方法可以在同包类访问,也可以在其它包子类中访问,而缺省只能在同包类访问,其它包是无法访问的,不管是否继承该类,看如下代码
    package db;public class test2 {
    protected void show(){//protected方法
    System.out.println("protected");
    }
    }package test;
    import db.test2;
    public class Test extends test2 {//继承

    public void myshow(){
    //test2 t=new test2();
                   //t.show();
    this.show();//这里是可以访问到父类的protected的方法
                    //但是如果该类不继承test2类的话, //t.show();是无法调用的
    //缺省在其它包我就不说了

    }
    }
    上面可以得出:protected修饰方法可以在同包任何类访问,但是在其它包需要继承该类,才能访问该类protected成员
       缺省不能再其它包访问
      

  3.   

    一直觉得protected这个玩意麻烦~~参考下这里:
    http://zhangjunhd.blog.51cto.com/113473/19287
      

  4.   

    22、 Private可以定义方法属性,但不能让的外部所看到。
    23、 Default可以定义方法和属性,可以在本包的任意位置访问。
    24、 Protected可以定义方法和属性,但是不能被不同包的非子类访问。
    25、 Public可以让所有的方法和类访问。