1.先說說感觸
Java最初的興起,很大一部分是因為它是面向對象的語言。面向對象最大的特點便是“萬事萬物皆對象”,而在現實世界中,每個事物的確可以認為是一個獨立的對象。將現實的問題轉化為對象間的問題,再用代碼描述解決問題的方法,編譯成機器可以讀懂的語言,最后由計算機執(zhí)行得出結果,這個流程便是程序員每天的工作。
那么可以看出,程序員每天最繁重的體力勞動便是用文字表達自己的想法。這是什么行業(yè),不就是作家嗎,只不過受眾是其他的作家而已。既然作家講究文筆、修辭和意境等,程序員又該注意些什么呢?我個人覺得,能做到結構清晰,內容明確,文字簡練即可(這就是代碼架構出現的原因)。
2.修飾訪問權限的關鍵字
| 修飾符及范圍 | 類內部 | 包內部 | 子類中 | 不限制 |
|---|---|---|---|---|
| private | 允許 | 不允許 | 不允許 | 不允許 |
| default | 允許 | 允許 | 不允許 | 不允許 |
| protected | 允許 | 允許 | 允許 | 不允許 |
| public | 允許 | 允許 | 允許 | 允許 |
3.訪問權限在現實中的場景
有一個人姓張名平,家住北京市,手機號碼是13366668888。他有一兒一女,兒子跟他一起住在北京,女兒獨自住在上海。根據一般情況,我們可以確定以下四點:1.兒子和女兒都姓張;2.只有父親名字為平;3.兒子和父親所在地為北京;4.認識張平的人都知道他的手機號碼。而與子女一樣的和被人知曉的就是可訪問的。
4.代碼描述現象
首先新建一個項目,通過包名區(qū)分不同的城市,用Father代表張平,用Boy代表兒子,用Girl代表女兒,Main則是程序啟動的入口和代表其他人。

程序目錄結構.png
由于名字是個人所有,所以用private修飾;而不同的城市對應不同的包名,所以用默認即可;只要是張平的孩子都姓張,所以用protected修飾;電話號碼就是讓別人記的,所以用public修飾。
package org.lance.beijing;
public class Father{
private String firstName = "平";
/*default*/ String address = "北京市";
protected String lastName = "張";
public String phone = "13366668888";
@Override
public String toString() {
return "Father [firstName=" + firstName + ", address=" + address + ", lastName=" + lastName + ", phone=" + phone
+ "]";
}
}
package org.lance.beijing;
public class Boy extends Father {
@Override
public String toString() {
return "Boy [firstName=" + firstName + ", address=" + address + ", lastName=" + lastName + ", phone=" + phone
+ "]";
}
}
package org.lance.shanghai;
import org.lance.beijing.Father;
public class Girl extends Father {
@Override
public String toString() {
return "Girl [firstName=" + firstName + ", address=" + address + ", lastName=" + lastName + ", phone=" + phone
+ "]";
}
}
在程序的入口處實例化這三個對象,展示每個人的基本資料。
import org.lance.beijing.Boy;
import org.lance.beijing.Father;
import org.lance.shanghai.Girl;
public class Main {
public static void main(String[] args) {
System.out.println(new Father().toString());
System.out.println(new Boy().toString());
System.out.println(new Girl().toString());
System.out.println(new Father().phone);
}
}
5.運行的結果

顯示不可訪問.png
Boy和Girl都會報Father的成員屬性不可訪問的錯誤,說明此處不能從Father那獲取。我們找到對應的變量,進行刪除,那么運行的結果便是子女和其他人能從張平那訪問的。

最后可以訪問.png