Java中有四个权限,分别为private,protected,default,public,不写即为default,每个权限分别为如下表格:
| private
| default
| protected
| public
| 本类可访问
| 是
| 是
| 是
| 是
| 本包非本类可访问
| 否
| 是
| 是
| 是
| 非本包的子类可访问
| 否
| 否
| 是
| 是
| 非本包的类
| 否
| 否
| 否
| 是
|
另外类成员的权限不得大于类的权限,如果大于,以类的权限为准。即如下的一个类: class Test{
public int i=0;
public void fun()
{
System.out.println(i);
}
}则类成员i和fun虽然定义的权限为public,但是由于类的权限为default,所以i,fun的权限仍为default。 通过对象访问类成员时,也要遵守权限,如下: class Test{
public static void main(String[] args){
Myclass a=new Myclass();
a.fun1();//错误,因为fun1的权限为private
a.fun2();
System.out.println(a.i1);//错误,因为i1的权限为private
System.out.println(a.i2);
}
}
class Myclass{
private int i1=0;
int i2=0;
private void fun1()
{
System.out.println("fun1()");
}
void fun2()
{
System.out.println("fun2()");
}
}权限在继承时,只能从小的范围到大的范围改变(或者权限不变),不得从大的权限到小的权限,如下例子: class parent{
public void test()
{
System.out.println("hello");
}
}
class children extends{
protected void test() //错误,test的权限变小了
{
System.out.println("hello");
}
}
|