public 权限最大,同类,同包,不同包,同包子类父类之间,不同包子类父类之间都可以访问。
java 默认的权限是default,即friendly(注:friendly 在java中没有,是c的说法。) 同类,同包,同包子类父类都可以访问。
protected受保护的,同类,同包,同包子类父类,不同包子类父类都可以访问
private 私有的权限最小,同类可以访问。
图如下:
位置 private 默认 protected public
同一个类 是 是 是 是
同一个包内的类 否 是 是 是
不同包内的子类 否 否 是 是
不同包并且不是子类 否 否 否 是
public 访问权限最高,不论是不是同一个包或是否是子类 都可以访问
protected 其次只有是不同包且不是子类的无法访问外,其它均可
默认级别 次之,要求只能是同一个包中的类才能访问
private 只能是同一个类才能访问
这些修饰符可以修饰方法或者属性,但是类只能用public 或者不写.
实例:
package test;
//访问修饰符的使用
public class PublicClass{
public String publicVariable = "publicVariable" ;
private String privateVar = "private var";
protected String protectedVar ="protected var";
String defaultVar="defaultVar";
public void showPublic(){
System.out.println("showPublic method!");
}
public void showProtected(){
System.out.println("Show protected method!");
}
void showDefault(){
System.out.println("Show default method!");
}
private void showPrivate(){
System.out.println("Nobody will access!");
}
}
Java代码
package test;
//import test.PublicClass;
class TestPublic{
private String var =" private variable in class-Test!";
public static void main(String args[]){
TestPublict = new TestPublic();
PublicClass pClass = new PublicClass();
//另外一个类中的共有属性和方法是可以被外界所访问的
System.out.println("可以访问到的资源属性:"+pClass.publicVariable);//可访问
pClass.showPublic(); // 可访问
//以下两条编译错误,在另外一个类中的私有方法是访问不到的
//System.out.println("可以访问到的资源属性:"+pClass.privateVariable ); //不能访问
// pClass.showPrivate(); //不能访问
//私有变量自己可以访问
System.out.println("私有变量自己可以访问"+t.var);
//protected 成员可以被该类的成员和子类的成员访问。
// 还可以被同一个包中内的其他类成员访问
System.out.println("可以访问到的资源属性:"+pClass.protectedVar);//可访问
pClass.showProtected();//可访问
System.out.println("可以访问到的资源属性:"+pClass.defaultVar);//可访问
pClass.showDefault();//可访问
}
}