1. 程式人生 > >20165218 2017-2018-1 《Java程序設計》第三周學習總結

20165218 2017-2018-1 《Java程序設計》第三周學習總結

對數 分享圖片 成員變量 private 需要 運算符 img 學習總結 IT

20165218 2017-2018-1 《Java程序設計》第三周學習總結

教材學習內容總結-第四章 類與對象

面向對象語言

需要完成某種任務時,首先要想到,誰去完成任務,即哪個對象去完成任務;提到數據,首先想到這個數據是哪個對象的。————《Java 2實用教程》P51

面向對象編程的三個特性:封裝性、繼承、多態

  • 封裝性: 將數據和對數據的操作封裝在一起。通過抽象,即從具體的實例中抽取出共同性質形成一般的概念。
graph LR
A[行為/功能]-->|抽象|B[方法]
graph LR
A[狀態描述]-->|抽象|B[屬性]
  • 繼承: 子類可以繼承父類的屬性和行為

  • 多態: 一是操作名稱的多態性,即向操作傳遞不同消息;二是繼承有關的多態,指同一個操作被不同類型對象調用時可能產生不同行為。


  • 類=類聲明+類體
  • 類體的內容:變量的聲明+方法定義
  • 成員變量在整個類內都有效,其有效性與它在類體中書寫的先後位置無關。
  • 方法中的局部變量只在方法內有效,且與其聲明的位置有關
變量 有效範圍
參數 整個方法
在一個復合語句中聲明 該復合語句
在一個循環語句中聲明 該循環語句
  • class A{
    int a = 12; \\合法,聲明的同時賦予初值12
    }
class A{
    int a;
    a = 12;\\非法
}

類體的內容中不能有語句,語句只能出現在方法體中


構造方法與對象的創建

  • 構造方法

    程序用類創建對象時需要的一種特殊方法,名字必須與他所在的類名字完全相同,沒有類型

System.out.println("南孚電池的儲電量是:"+nanfu.electricityAmount);

類的名字 對象名字 \\聲明對象
對象 = new 構造方法 \\為對象分配變量(使用new運算符和構造方法)
  • 使用對象

    對象.變量
    對象.方法

參數傳值

  • 可變參數

    \\示例
    public void f(int ... x)
    \\示例2
    public void g(double a, int ... x)
    \\錯誤示例,可變參數x代表的最後一個參數不是method方法的最後一個參數
    public void method(int ... x, int y)
    可變參數不給出參數列表中從某項開始直到最後一項
    參數的名字和個數,但這些參數類型相同。參數代表可以通過下表運算來表示參數列表中的具體參數。

實例成員與類成員(static)

  • 實例變量與類變量

    實例變量和相應的對象關聯,類變量和相關聯

  • 實例方法與類方法

方法 實例方法 類方法
分配入口地址 該類創建對象後 該類被加到內存時
調用 通過對象調用 通過類名和對象調用皆可
操作 可操作實例變量和類變量 只能操作類變量

this關鍵字

表示某個對象(註意與前文區分成員變量與局部變量的this區分),可以出現在實例方法和構造方法中,但不可以出現在類方法中。

  • this關鍵字出現在類的構造方法中時,代表使用該構造方法所創建的對象

  • this關鍵字出現在實例方法中時,就代表正在調用該方法的對象


訪問權限

權限 關鍵字 含義
私有 private 在B類中,不能通過A類的類名來調用A中的私有類變量和私有類方法
共有 public B類中用類A創建了一個對象後,該對象能訪問A中的共有變量和共有方法。B中也可通過A的類名調用A中的類成員變量和類方法
受保護的 protected

B類中用類A創建了一個對象後,如果B和A類在同一個包中,那麽該對象可以訪問A的protected變量和protected方法。任何一個與A類同包的類中,也可通過A的類名訪問A類的protected類變量和protected類方法
友好| 不用privatepublicprotected修飾 | B類中用類A創建了一個對象後,如果B和A類在同一個包中,那麽該對象可以訪問A的友好變量和友好方法。任何一個與A類同包的類中,也可通過A的類名訪問A類的類友好成員變量和類友好方法


教材學習中的問題和解決過程

  • 問題1:“友好變量和友好方法”與“受保護的成員變量和方法”有什麽不同?
  • 問題1解決方案:成員變量分為實例變量和類變量。“友好”是“任何一個與A類同包的類中,可通過A的類名訪問A類的類友好成員變量和類友好方法”;“ protected ”則是“任何一個與A類同包的類中,可通過A的類名訪問A類的protected類變量和protected類方法”。“友好”比protected權限更大一些。

代碼調試中的問題和解決過程

  • 問題1:當需要同時編譯三個源文件時,比如Example4_8.java,Circle.java,Circular.java(都在Ch4/src之下,當前位置是Ch4,在命令行輸入javac -d bin src/Example4_8.java,會出現如下狀況
    技術分享圖片

  • 問題1解決方案:這是因為同時需要編譯的Circle.java,Circular.java不在Ch4之下,需要進入Ch4/src後,利用javac -d ../bin Example4_8.編譯即可:
    技術分享圖片

  • 問題2:教材第76頁實例
    技術分享圖片

  • 問題2解決方案:雖然在類Example4_9沒有聲明數據類型,但在類SIM中聲明了double型,調用SIM為對象simOne分配變量時,數據類型要保持統一。在後面加大寫字母L

  • 問題3:因為理解不深刻,錯把代碼寫成
    技術分享圖片

  • 問題3解決方案:聲明類的格式是類 對象名字,而使用對象則是對象.變量/方法,若是類變量,則可以類.類變量,通過類名直接訪問類變量

代碼托管

技術分享圖片

參考資料

  • Java學習筆記(第8版)

  • 《Java學習筆記(第8版)》學習指導

20165218 2017-2018-1 《Java程序設計》第三周學習總結