public 公共的

    protected 受保护的

    默认修饰符(不写) 默认不写

    private 私有的

    1.能修饰什么?
    权限修饰符可以用来修饰 类本身 和 类中的成员(除程序块之外 因为程序块没名字)
    权限修饰符用来修饰类的时候只有两个可以用来修饰类(public以及默认修饰符)
    权限修饰符都可以用来修饰类中其他成员

    2.范围如何?
    同包 即package后面的包名相同 哪怕多一个点都不行
    public(常见) 本类 同包 子类 当前项目中任意类的位置 只要有对象都可以访问public修饰的

    protected 本类 同包 子类(只能通过子类对象在子类范围内部访问 出了范围就不行 哪怕父类对象想访问也不行)

    默认修饰符(不写) 本类 同包

    private(常见) 本类

    1. package permissiona;
    2. public class TestA {
    3. public final void testPublic(){
    4. System.out.println("我是Public修饰符方法");
    5. }
    6. protected void testProtected(){
    7. System.out.println("我是Protected修饰符方法");
    8. }
    9. void testDefault(){
    10. System.out.println("我是默认修饰符方法");
    11. }
    12. private void testPrivate(){
    13. System.out.println("我是Private修饰符方法");
    14. }
    15. }


    1. package permissionb;//包名要完全一致才算同包
    2. import permissiona.TestA;
    3. public class TestB extends TestA{
    4. public void testB(){
    5. this.testPublic();
    6. this.testProtected();
    7. this.testDefault();//不在同包的范围内访问 编译会报错
    8. }
    9. public static void main(String[] args){
    10. TestA a = new TestA();
    11. a.testPublic();
    12. a.testProtected();//父类自己想访问Protected修饰的成员也不行 编译会报错
    13. }
    14. }
    1. package permissiona;
    2. public class RunMain {
    3. public static void main(String[] args){
    4. TestA a = new TestA();
    5. a.testPublic();
    6. a.testProtected();
    7. a.testDefault();//同包的范围内可以访问默认修饰符修饰的成员
    8. a.testPrivate();//Private修饰的成员只能在本类中在能访问 出了范围编译会报错
    9. }
    10. }