Java 访问控制修饰符

1. private

  • private修饰的成员变量不能被继承,会被隐式指定为final
  • private修饰的方法能被继承,但是任何其他类没有访问权限,子类继承了也无法访问
  • private不能修饰类
public class Father {
    private int a;
    private void show(){
        System.out.println("show");
    }
    void getShow(){
        this.show();
    }
}

class Child extends Father{

}

class Test{
    public static void main(String[] args) {
        Child c=new Child();
        c.getShow();//能打印出show,说明priavte方法还是继承了,但无法访问
    }
}

2. protected

  • 在同一包中,protected变量和方法都能被其他类访问
  • 在不同包中,protected变量和方法都不能被访问;但子类实例可以访问其从基类继承而来的 protected 方法,而不能访问基类实例的protected方法
  • protected不能修饰类

3. default

  • 默认不写修饰符的变量和方法表示同一包可见
  • 不同包,即使是子类也无法访问到继承到的
  • 接口里的变量都隐式声明为 public static final,而接口里的方法默认情况下访问权限为 public

4. public 

  • 较好理解,都能访问

Runoob汇总表格如下:

原文地址:https://www.cnblogs.com/Kinghao0319/p/13908555.html