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修饰的成员只能在本类中在能访问 出了范围编译会报错}}
