201711671125 《Java程式設計》第7周學習總結
教材學習內容總結
第六章
1.介面
使用interface來定義一個介面,介面分為介面宣告和介面體。
(1)介面宣告:interface 介面的名字
(2)介面體:包含常量的宣告(沒有變數)和抽象方法兩部分。介面體中所有的常量和抽象方法的訪問許可權都是public,而且是static常量。
2.實現介面
(1)類實現介面
一個類需要在類宣告中使用關鍵字implements宣告該類實現一個或多個介面。如果實現多個介面,用逗號隔開介面名。
(2)重寫介面中的方法
介面中的方法一定是abstract方法,所以類在重寫介面方法時不僅要去掉abstract修飾符、給出方法體,而且方法的訪問許可權一定要明顯的用public來修飾。
抽象類可以重寫介面中的方法,也可以直接擁有介面中的方法。
(3)介面細節說明
程式可以用介面名訪問介面中的常量,但是如果一個類實現了介面,那麼該類可以直接在類體中使用該介面的常量。
定義介面時,如果在關鍵字interface前面加上public關鍵字,就稱這樣的介面是public介面。Public介面可以被任何一個類實現。如果一個介面不加public修飾,就稱作友好介面,友好介面可以被與該介面在同一個包中的類實現。
如果父類實現了某個介面,那麼子類也實現該介面,不用再宣告實現。
介面也可以被繼承,可以通過關鍵字extends宣告一個介面是另一個介面的子介面。介面中的常量和方法都是public的,所以子介面將繼承父介面中的全部方法和常量。
3.介面的UML圖
頂部第一層是名字層,介面的名字必須是斜體字,而且需要用《interface》修飾名字,並且該修飾和名字分列在兩行。
第二層是常量層,列出介面中的常量和型別,“常量名字:型別”。
第三層是方法層,也稱操作層,列出介面中的操作方法及返回型別,“方法名字(引數列表):型別”。
如果一個類實現了一個介面,那麼類和介面的關係是實現關係,稱類實現介面。用虛線連線,虛線的起始端是類,終點端是它實現的介面,但終點端使用一個空心的三角形表示虛線的結束。
4.介面回撥
用藉口宣告的變數稱作介面變數。
介面回撥是指:可以把實現某一介面的類建立的物件的引用賦值給該介面宣告的介面變數,那麼該介面變數就可以呼叫被類實現的介面方法。
介面變數呼叫類實現的介面方法(這一過程稱為介面回撥)。
介面無法呼叫類中的其他非介面方法。
介面的思想在於它可以要求某些類有相同名稱的方法,但方法的具體內容可以不同,即要求這些類實現介面,以保證這些類一定有介面中所宣告的方法。介面在要求一些類有相同名稱的方法的同時,並不強迫這些類具有相同的父類。
6.介面與多型
由介面產生的多型就是指不同的類在實現同一個介面能具有不同的實現方式,那麼介面產量在回撥介面方法時就可能具有多種形態。
7.介面引數
如果一個方法的引數是介面型別,我們就可以將任何實現該介面的類的例項的引用傳遞給該介面引數,那麼介面引數就可以回撥類實現的介面方法。
8.abstract 類與介面的比較
abstract 類和介面都可以有abstract方法。
介面中可以有常量,不能有變數;而abstract類中既可以有常量,也可以有變數。
abstract類中也可以有非abstract方法,介面不可以。
9.面向介面程式設計
可以通過在介面中宣告若干個abstract方法,表達這些方法的重要性,方法體的內容細節由實現介面的類去完成。
第七章
1.內部類
內部類的外嵌類的成員變數在內部類中仍然有效,內部類中的方法也可以呼叫外嵌類中的方法。
內部類的類體中不可以宣告類變數和類方法。外嵌類的類體中可以用內部類宣告物件,作為外嵌類的成員。
內部類僅供它的外嵌類使用,其他類不可以用某個類莫內部類宣告物件。
內部類可以被修飾為static內部類,static內部類就是外嵌類中的一種靜態資料型別,這樣一來,程式就可以在其他類中使用static內部類來建立物件了。static內部類不能操作外嵌類中的例項成員變數。
2.匿名類
2.1和子類有關的匿名類
建立子類物件時,除了使用父類的構造方法外還有類體,此類體被認為是一個子類去掉類聲明後的類體,稱作匿名類。不可能用匿名類宣告物件,但可以直接用匿名類建立一個物件。
匿名類可以繼承父客戶的方法也可以重寫父類的方法。
使用匿名類時,必然是在某個類中直接用匿名類建立物件,因此匿名類一定是內部類。
匿名類可以訪問外嵌類中的成員變數和方法,匿名類的類體中不可以宣告static成員變數和static方法。
由於匿名類是一個子類,但沒有類名,所以在用匿名類建立物件時,要直接使用父類的構造方法。
2.2和介面有關的匿名類
允許直接用介面名和一個類體建立一個匿名物件。
如果某個方法的引數是介面型別,那麼可以使用介面名和類體組合建立一個匿名物件傳遞給方法的引數,類體必須要重寫介面中的全部方法。
3.異常類
斷言語句一般用於程式不準備通過捕獲異常來處理的錯誤。
語法格式:使用關鍵字assert宣告一條斷言語句。
當使用Java直譯器直接執行應用程式時,預設地關閉斷言語句,在除錯程式時可以使用-ea啟用斷言語句。
5.finally語句
在執行try-catch 語句後,執行finally子語句,也就是說,無論在try部分是否發生過異常,finally子語句都會被執行。
如果在try-catch語句中執行了return語句,那麼finally子語句仍然會被執行。
try-catch語句中執行了程式退出程式碼,則不執行finally語句(當然包括其後的所有語句)。
教材學習中的問題和解決過程
要區分好abstract類和介面,判斷好什麼時候使用。內部類這部分的概念很容易混淆,要多參照例題去理解,要記住static什麼時候能用,什麼時候不能用。
程式碼除錯中的問題和解決過程
看完一小節的內容後要上機執行例題結合理解,比較容易掌握。
其他
還是要多敲程式碼才可以啊。
學習進度條
|
程式碼行數(新增/累積) |
部落格量(新增/累積) |
學習時間(新增/累積) |
重要成長 |
目標 |
2000行 |
10篇 |
80小時 |
|
第一週 |
67/67 |
1/1 |
8/8 |
|
… |
… |
… |
… |
|
第七週 |
288/1852 |
1/6 |
8/60 |
|
參考資料
《Java2實用教程(第5版)》