日期:2014-05-20  浏览次数:20718 次

java中访问权限的小问题
java中的protacted权限和缺省(包)访问权限:
protacted权限支持继承访问和包访问权限。。。
缺省权限支持包访问。。。

两者都不支持跨包访问,也就是说,A类有个protected方法f(),在同一个包里,不管其他类是不是继承自A类,
都可以访问f();

在不同的包里,不管其他类是不是继承自A类,都无法访问f();

那么两者的区别是什么????????????



------解决方案--------------------
首先我想纠正一下: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成员
缺省不能再其它包访问
------解决方案--------------------
一直觉得protected这个玩意麻烦~~参考下这里:
http://zhangjunhd.blog.51cto.com/113473/19287