Java入門 第二季第二章 封裝

版權聲明:本文爲博主原創文章,未經博主允許不得轉載。 https://blog.csdn.net/smilewsw/article/details/51156040
這是我學習慕課網Java課程的筆記,原視頻鏈接爲:http://www.imooc.com/learn/124

面向對象三大特性:封裝、繼承、多態

2-1 什麼是Java中的封裝

 ★ 概念
        將類的某些信息 隱藏在類內部,不允許外部程序直接訪問,而是通過 該類提供的方法 來實現對隱藏信息的操作和訪問
 ★ 好處
        a.只能通過規定的 方法 訪問數據
        b.隱藏 類的實例細節,方便修改和實現
 ★ 封裝的實現步驟


2-2 使用 包 管理 Java 中的類

 包的作用
        a.管理Java文件
        b.解決同名文件衝突
 定義包:package 包名
        注:必須放在Java源程序的第一行
               包名間可以使用“ . ”號隔開(層次關係)
               eg:com.immoc.MyClass

        例如:音樂類——MyClassMusic
                   -music
                   com.imooc.music.MyClassMusic
                   -movie
                   com.imooc.movie.MyClassMusic
 系統中的包
        java.(功能).(類)
        eg:java.lang.(類) 包含java語言基礎的類
                java.util.(類) 包含java語言中各種工具類
                java.io.(類) 包含輸入、輸出相關功能的類
 包的使用
        a. 可以通過 import關鍵字,在某個文件中使用其他文件中的類
                import com.imooc.music.MyClass
        b. Java中,包的命名規範是全小寫字母拼寫
        c. 使用的時候不但可以加載某個包下的所有文件
                eg:com.imooc.*       其中 “ * ” 表示所有文件
            也可以加載某個具體子包下的所有文件
                eg:com.imooc.music.*

2-3 Java 中的訪問修飾符

訪問修飾符——可以修飾屬性和方法的訪問範圍

 訪問修飾符的總結


                形象化類比系列圖
            
            圖:類的屬性和方法 —— 人的錢


圖:private —— 鎖在保險櫃裏,只有自己可以用


圖:默認 —— 同一個屋檐下的人可以使用


 圖:protected —— 跟我有關係的也可以使用


    圖:public —— 所有人都可以使用


2-4 Java 中的 this 關鍵字

 this關鍵字代表當前對象
        this.屬性 操作當前對象的屬性
        this.方法 調用當前對象的方法

 封裝對象的屬性的時候,經常會使用 this 關鍵字

        Eclipse提供了自動生成 getter 和 setter 的功能,步驟:

        Step 1:點擊Source,選擇 Generate Getters and Setters


                      Step 2:選擇要生成的方法,點擊 確定


                        效果圖:this關鍵字 避免了變量重名導致的混亂


2-5 什麼是 Java 中的內部類

內部類(Inner Class)就是定義在另外一個類裏面的類。與之對應,包含內部類的類被稱爲 外部類

 內部類的主要作用
        a. 內部類提供了更好的封裝,可以把內部類隱藏在外部類之內,不允許同一個包中的其他類訪問該類
        b. 內部類的方法可以直接訪問外部類的所有數據,包括私有的數據
        c. 內部類所實現的功能使用外部類同樣可以實現,只是有時使用內部類更方便
 內部類的種類
        成員內部類
        靜態內部類
        方法內部類
        匿名內部類

                                                                 圖:示例



2-6 Java 中的 成員內部類

內部類中最常見的就是成員內部類,也稱爲普通內部類。

我們來看如下代碼:


運行結果爲:


從上面的代碼中我們可以看到,成員內部類的使用方法:
 Inner 類定義在 Outer類的內部,相當於 Outer類 的一個成員變量的位置
    Inner類 可以使用任意訪問控制符,如 public、protected、private等
 Inner 類中定義的 test() 方法可以直接訪問 Outer類中的數據,而不受訪問控制符的影響,如直接訪問 Outer類中的私有屬性 a
 定義了成員內部類後,必須使用外部類對象來創建內部類對象,而不能直接去 new 一個內部類對象,
        即:內部類 對象名 = 外部類對象.new 內部類();
 編譯上面的程序後,會發現產生了兩個 .class 文件

其中,第二個是外部類的 .class 文件,第一個是內部類的 .class文件,即成員內部的 .class 文件總是這樣:外部類名$內部類名.class

另外,
 外部類是不能直接使用內部類的成員和方法


可先創建內部類的對象,然後通過內部類的對象來訪問其成員變量和方法。

                                            圖:修正版


②如果外部類和內部類具有相同的成員變量或方法,內部類默認訪問自己的成員變量或方法。
     如果要訪問外部類的成員變量,可以使用 this 關鍵字。


運行結果:


我的進一步探究:

探究1:

編譯器會報錯:


探究2:


運行結果:


2-7 Java 中的 靜態內部類

靜態內部類是 static 修飾的內部類,這種內部類的特點是:
 靜態內部類不能直接訪問外部類的非靜態成員,但可以通過 new 外部類().成員 的方式訪問
 如果外部類的靜態成員與內部類的成員名稱相同,可通過“類名.靜態成員”訪問外部類的靜態成員;如果外部類的靜態成員與內部類的成員名稱不相同,則可通過“成員名”直接調用外部類的靜態成員
 創建靜態內部類的對象時,不需要外部類的對象,可以直接創建 內部類 對象名 = new 內部類();


運行結果 :


我的進一步探究:


運行結果:


2-8 Java 中的 方法內部類

方法內部類 就是 內部類 定義在 外部類 的方法中方法內部類只在該方法的內部可見,即只在該方法內可以使用。


一定要注意哦:由於方法內部類不能在外部類的方法以外的地方使用,因此方法內部類不能使用訪問控制符和 static 修飾符


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章