public 公共的
protected 受保护的
默认修饰符(不写) 默认不写
private 私有的
1.能修饰什么?
权限修饰符可以用来修饰 类本身 和 类中的成员(除程序块之外 因为程序块没名字)
权限修饰符用来修饰类的时候只有两个可以用来修饰类(public以及默认修饰符)
权限修饰符都可以用来修饰类中其他成员
2.范围如何?
同包 即package后面的包名相同 哪怕多一个点都不行
public(常见) 本类 同包 子类 当前项目中任意类的位置 只要有对象都可以访问public修饰的
protected 本类 同包 子类(只能通过子类对象在子类范围内部访问 出了范围就不行 哪怕父类对象想访问也不行)
默认修饰符(不写) 本类 同包
private(常见) 本类
package permissiona;
public class TestA {
public final void testPublic(){
System.out.println("我是Public修饰符方法");
}
protected void testProtected(){
System.out.println("我是Protected修饰符方法");
}
void testDefault(){
System.out.println("我是默认修饰符方法");
}
private void testPrivate(){
System.out.println("我是Private修饰符方法");
}
}
package permissionb;//包名要完全一致才算同包
import permissiona.TestA;
public class TestB extends TestA{
public void testB(){
this.testPublic();
this.testProtected();
this.testDefault();//不在同包的范围内访问 编译会报错
}
public static void main(String[] args){
TestA a = new TestA();
a.testPublic();
a.testProtected();//父类自己想访问Protected修饰的成员也不行 编译会报错
}
}
package permissiona;
public class RunMain {
public static void main(String[] args){
TestA a = new TestA();
a.testPublic();
a.testProtected();
a.testDefault();//同包的范围内可以访问默认修饰符修饰的成员
a.testPrivate();//Private修饰的成员只能在本类中在能访问 出了范围编译会报错
}
}