由理解Java訪問權限而產生的感觸

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
最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
【社區(qū)內容提示】社區(qū)部分內容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發(fā)布,文章內容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內容

友情鏈接更多精彩內容