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汇总表格如下: