Java访问修饰符
基本介绍
java 提供四种访问控制修饰符号,用于控制方法和属性(成员变量)的访问权限(范围) :
-
公开级别:用 public 修饰,对外公开
-
受保护级别:用 protected 修饰,对子类和同一个包中的类公开
-
默认级别:没有修饰符号, 向同一个包的类公开.
-
私有级别:用 private 修饰,只有类本身可以访问,不对外公开.
范围
访问级别 | 访问控制修饰符 | 同类 | 同包 | 子类 | 不同包 |
---|---|---|---|---|---|
公开 | public | 可 | 可 | 可 | 可 |
受保护 | protected | 可 | 可 | 可 | 不可 |
默认 | 没有修饰符号 | 可 | 可 | 不可 | 不可 |
私有 | private | 可 | 不可 | 不可 | 不可 |
注意事项
-
修饰符可以用来修饰类中的属性,成员方法以及类
-
只有默认的和public才能修饰类,并且遵循上述访问权限的特点。
-
成员方法的访问规则和属性完全一样.
-
关于在子类中的访问权限,如下图
假设有三个包,包1,包2,包3
父类所在包 | 子类所在包 | 使用子类的类所在包 | 父类的public属性 | 父类的protected属性 | 父类的默认属性 | 父类的private属性 |
---|---|---|---|---|---|---|
包1 | 包1 | 包1 | 可 | 可 | 可 | 不可 |
包1 | 包2 | 包1 | 可 | 可 | 不可 | 不可 |
包1 | 包1 | 包2 | 可 | 不可 | 不可 | 不可 |
包1 | 包2 | 包2 | 可 | 不可 | 不可 | 不可 |
包1 | 包2 | 包3 | 可 | 不可 | 不可 | 不可 |
由图可知大部分情况下protected和默认修饰符访问的范围是相同的,只有当父类和子类不在同一个包且使用子类的类与父类在同一个包时,protected修饰符访问的范围才大于默认修饰符。