java中有四个权限,分别为private,protected,default,public,不写即为default,每个权限分别为如下表格:privatedefaultprotectedpublic
本类可访问是是是是
本包非本类可访问否是是是
非本包的子类可访问否否是是
非本包的类否否否是
另外类成员的权限不得大于类的权限,如果大于,以类的权限为准。即如下的一个类: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");
}
}