java中四个访问修饰词的学习

java中访问修饰符有四个,private,default,protected,public.

四个访问修饰符的访问权限如下图:

访问修饰符 同一个类中 同一个包中 不同包的子类中 不同包的非子类中
private
default
protected
public

private访问的权限

package com.aaa.bbb;

public class task {
    
    
    public static void main(String[] args) {
    
    
        Test test = new Test();
        test.go();
    }
}
class Test {
    
    
    private void go() {
    
    
        System.out.println("不能跨类访问");
    }
} 
//java: go() 在 com.aaa.bbb.Test 中是 private 访问控制

所以private修饰的不能跨类访问。
default是java默认的访问权限,可以被包内其他类访问。

protected的访问权限

package com.aaa.bbb;

public class task {
    
    
    public static void main(String[] args) {
    
    
    }
    protected void go() {
    
    
        System.out.println("能跨类访问");
    }
}

protected修饰的方法在包bbb类task中。

package com.aaa.ccc;

import com.aaa.bbb.task;

public class task1 {
    
    
        public static void main(String[] args) {
    
    
            task test4 = new task();
            test4.go();
        }
        static class Test2 extends task {
    
    
            public void go() {
    
    
                System.out.println("protected修饰的能在不同包的子类中访问");
            }
        }

}

在另一个包中调用是可以的。但当去除继承关系,就是在不同包的非子类中时就不行。

package com.aaa.ccc;


import com.aaa.bbb.task;

public class task1 {
    
    
        public static void main(String[] args) {
    
    
            task test4 = new task();
            test4.go();
        }
        static class Test2 {
    
    
            public void go() {
    
    
                System.out.println("protected修饰的能在不同包的子类中访问");
            }
        }

}
java: go() 在 com.aaa.bbb.task 中是 protected 访问控制

public的访问权限是最高的,自不用多说。

猜你喜欢

转载自blog.csdn.net/YiNianShangE/article/details/124133109