中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

Java封裝與接口的概念

發布時間:2021-09-14 08:44:42 來源:億速云 閱讀:204 作者:chen 欄目:編程語言

這篇文章主要講解了“Java封裝與接口的概念”,文中的講解內容簡單清晰,易于學習與理解,下面請大家跟著小編的思路慢慢深入,一起來研究和學習“Java封裝與接口的概念”吧!

封裝與接口

封裝(encapsulation)是計算機常見的術語,即保留有限的外部接口(interface),隱藏具體實施細節。比如在 Linux架構,就可以看到Linux操作系統封裝了底層硬件的具體細節,只保留了系統調用這一套接口。用戶處在封裝的外部,只能通過接口,進行所需的操作。

封裝在生活中很常見。比如下面是一個充電電筒:

Java封裝與接口的概念

一個用戶即使不看說明書,也可以猜到這個電筒的操作: 開關和充電。這個電筒用一個塑料殼將用戶不需要接觸的內部細節隱藏起來,只保留了兩個接口,開關和電插頭。使用這兩個接口,用戶足以使用該產品在設計中想要實現的功能。如果所有的細節都同時暴露給用戶,那么用戶會對產品感到不知所措 (比如下面不加殼的遙控器)。因此,封裝提高了產品的易用性。

Java封裝與接口的概念

如果產品不封裝,電筒或者遙控器的許多細節會暴露在用戶面前: 電池、電路、密封的橡膠等等。盡管這可以讓用戶更自由的對產品實施操作,比如直接給電池放電,取出一個LED燈等等。然而,用戶往往要承擔更大的損壞產品的風險。因此,封裝提高了產品的安全性。

一個Java軟件產品與一個日常產品相同。一個對象內部可以有許多成員(數據成員和方法)。有一些數據成員和方法只是內部使用。這時,我們會希望有一個給對象“加殼”的機制,從而封裝對象。這樣,用戶可以比較容易學習和使用外部的接口,而不必接觸內部成員。

對象成員的封裝

Java通過三個關鍵字來控制對象的成員的外部可見性(visibility): public, private, protected。

  • public: 該成員外部可見,即該成員為接口的一部分

  • private: 該成員外部不可見,只能用于內部使用,無法從外部訪問。

(protected涉及繼承的概念,放在以后說)

我們先來封裝以前定義的Human類:

public class Test
{    public static void main(String[] args)
    {
        Human aPerson = 
new Human(160);
        System.out.println(aPerson.getHeight());
        aPerson.growHeight(170);
        System.out.println(aPerson.getHeight());
        aPerson.repeatBreath(100);
    }
}class Human
{    /**
     * constructor     */
    public Human(int h)
    {        this.height = h;
        System.out.println("I'm born");
    }    /**
     * accessor     */
    public int getHeight()
    {       return this.height;
    }    /**
     * mutator     */
    public void growHeight(int h)
    {        this.height = 
this.height + h;
    }     /**
      * encapsulated, for internal use      */
    private void breath()
    {
        System.out.println("hu...hu...");
    }   /**
    * call breath()    */
    public void repeatBreath(int rep)
    {        int i;        for(i = 0; i < rep; i++) {            this.breath();
        }
    }    private int height; 
// encapsulated, for internal use}

內部方法并不受封裝的影響。Human的內部方法可以調用任意成員,即使是設置為private的height和breath()

外部方法只能調用public成員。當我們在Human外部時,比如Test中,我們只能調用Human中規定為public的成員,而不能調用規定為private的成員。

通過封裝,Human類就只保留了下面幾個方法作為接口:

  • getHeight()

  • growHeight()

  • repBreath()

我們可以將Human類及其接口表示為如下圖的形式:

Java封裝與接口的概念

“加了殼的遙控器”

如果我們從main中強行調用height:

System.out.println(aPerson.height);

將會有如下錯誤提示:

Test.java:6: height has private access in Human
        System.out.println(aPerson.height);
                                  ^
1 error

Beep, 你觸電了! 一個被說明為private的成員,不能被外部調用。

在Java的通常規范中,表達狀態的數據成員(比如height)要設置成private。對數據成員的修改要通過接口提供的方法進行(比如getHeight()和growHeight())。這個規范起到了保護數據的作用。用戶不能直接修改數據,必須通過相應的方法才能讀取和寫入數據。類的設計者可以在接口方法中加入數據的使用規范。

類的封裝

在一個.java文件中,有且只能有一個類帶有public關鍵字,比如上面的Test類。所以,從任意其他類中,我們都可以直接調用該類。Human類沒有關鍵字。更早之前,我們對象的成員也沒有關鍵字。這種沒有關鍵字的情況也代表了一種可見性,我將在包(package)的講解中深入。

練習 封裝一個Torch類,來表示電筒。接口有開關和充電。內部的成員有電量。

感謝各位的閱讀,以上就是“Java封裝與接口的概念”的內容了,經過本文的學習后,相信大家對Java封裝與接口的概念這一問題有了更深刻的體會,具體使用情況還需要大家實踐驗證。這里是億速云,小編將為大家推送更多相關知識點的文章,歡迎關注!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

信丰县| 九江市| 桃江县| 广水市| 昌江| 长白| 华阴市| 盐亭县| 遂川县| 区。| 浙江省| SHOW| 咸丰县| 裕民县| 崇仁县| 夏河县| 怀来县| 北流市| 余庆县| 桂林市| 隆回县| 萝北县| 漾濞| 黔南| 永靖县| 阜康市| 同心县| 兰坪| 抚顺市| 长海县| 镶黄旗| 南平市| 楚雄市| 青冈县| 怀集县| 全南县| 旺苍县| 渝中区| 宁明县| 沙河市| 兴安县|