注:本文討論的全部狀況沒有考慮嵌套類。java
Java的訪問級別修飾符(Access Level Modifiers)有四種,按照可訪問範圍的大小排列,以下表所示(雖然官方文檔也有,可是老夫知道泥萌是不會去看的_(:з)∠)_):
表格的橫行列舉的是四個訪問範圍。git
修飾符 | 中文含義 | 類(class) | 包(package) | 子類(subclass) | 全部類(world) |
---|---|---|---|---|---|
public | 公有 | √ | √ | √ | √ |
protected | 保護 | √ | √ | √ | × |
無 | 缺省 | √ | √ | × | × |
private | 私有 | √ | × | × | × |
注1:缺省狀況,在oracle官方文檔裏也被叫作package-private,咱們能夠理解爲包-私有。
注2:爲什麼全部類不用All Class,由於文檔裏就是這麼寫的= ̄ω ̄=。github
老夫簡單的介紹public、private和package-private這三種狀況,重點介紹protected。oracle
直接來看代碼,一目瞭然,代碼清單以下:ui
項目部分包的目錄結構spa
parent.javacode
package com.smallclover.pack1; public class Parent { protected void parent() { } }
Child.java(與父類在同一個包下)htm
package com.smallclover.pack1; public class Child extends Parent{ public void child() { Parent p = new Parent(); p.parent();//經過父類來訪問 Child c = new Child(); c.parent();//經過子類來訪問 } }
Child.java(與父類在不一樣包下)ip
package com.smallclover.pack2; import com.smallclover.pack1.Parent; public class Child extends Parent{ public void child() { Child c = new Child(); c.parent();//只能經過子類來訪問 } }
未完待續(~o( =∩ω∩= )m)