1. 程式人生 > >201711671125 《Java程式設計》第6周學習總結

201711671125 《Java程式設計》第6周學習總結

教材學習內容總結

第五章

1.子類與父類

繼承是一種由已有的類建立類的機制。由繼承得到的類稱為子類,被繼承的類稱為父類。Java不支援多重繼承,即子類只有一個父類。

1.1子類

在類的宣告中,通過使用關鍵字extends來定義一個類的子類。(格式:class 子類名 extends 父類名)

1.2類的樹形結構

Object類是所有類的祖先類。任何類都是Object類的子孫類,每個類(除了Object類)有且僅有一個父類,一個類可以有多個或零個子類。

2.子類的繼承性

類有兩種重要成員,成員變數和方法。

2.1子類和父類在同一包中的繼承性

如果子類和父類在同一個包中,子類繼承父類中不是private的成員變數和方法。

2.2子類和父類不在同一包中的繼承性

當父類和子類不在同一個包中時,子類只繼承父類中的protected和public的成員變數和方法。

2.3繼承關係的UML圖

實線的起始端是子類的UML圖,終點端是父類的UML圖,但終點端使用一個空心的三角形表示實線的結束。

2.4protected進一步說明

(1)對於子類D自己宣告的protected成員變數和方法,只要Other類和D類在同一個包中,object物件就可以訪問這些protected成員變數和方法。

(2)對於子類D從父類繼承的protected成員變數或方法,需要追溯到這些protected成員變數或方法所在的“祖先類”。

3.子類與物件

Instanceof運算子,左面操作元是物件,右面的操作元是類。運算結果是true或false。

4.成員變數的隱藏和方法重寫

4.1成員變數的隱藏

所宣告的成員變數名字和從父類繼承來的成員變數的名字相同(宣告的型別可以不同),在這種情況下,子類就會隱藏所繼承的成員變數。

特點:(1)子類物件以及子類自己定義的方法操作與父類同名的成員變數是指子類重新宣告的這個成員變數。(2)子類物件仍然可以呼叫從父類繼承的方法操作被子類隱藏的成員變數。

4.2方法重寫

重寫的語法規則:這個方法的型別和父類的方法的型別一致或是父類的方法的子型別,並且這個方法的名字、引數個數、引數型別和父類的方法完全相同。

5.super關鍵字

如果在子類中想使用被子類隱藏的成員變數或方法,就需要使用關鍵字super。例如super.x,super.play()。

5.1使用super呼叫父類的構造方法

如果子類的構造方法沒有明顯的指明使用父類的哪個構造方法,子類呼叫父類不帶引數的建構函式。子類在其構造方法中需要使用super來呼叫父類的構造方法,而且super必須是子類構造方法中的頭一條語句。

6.final關鍵字

final關鍵字可以修飾類、成員變數和方法中的區域性變數。

6.1final類不能被繼承,即不能有子類。

6.2final方法

如果用final修飾父類中的一個方法,那麼這個方法不允許子類重寫。

6.3常量

如果成員變數或區域性變數被修飾為final,那它就是常量。

7.物件的上轉型物件

物件的上轉型物件的實體是子類負責建立的,但上轉型物件會失去原物件的一些屬性和功能。(相當於子類物件的一個“簡化”物件)。

(1)上轉型物件不能操作子類新增的成員變數,不能呼叫子類新增加的方法。

(2)上轉型物件可以訪問子類繼承或隱藏的成員變數,也可以呼叫子類整合的方法或子類重寫的例項方法。

8.繼承與多型

多型性就是指父類的某個方法被其子類重寫時,可以各自產生自己的功能行為。

9.abstract類和abstract方法

Abstract方法只允許宣告,不允許實現(沒有方法體),而且不允許使用final和abstract同時修飾一個方法或類,也不允許使用static修飾abstract方法。

(1)abstract類中可以有abstract方法,也可以有非abstract方法。

(2)abstract不能用new運算子建立物件

(3)abstract的子類

如果一個非abstract類是abstract的子類,它必須重寫父類的abstract方法,即去掉abstract方法的abstract修飾,並給出方法體。可以繼承父類的abstract方法,也可重寫。

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

概念多易混淆,多看書記住概念,並且敲課本例題加速理解這些概念。

程式碼除錯中的問題和解決過程

多看幾遍例題再上機執行,理解起來會比較容易一些。

其他

還是要多敲程式碼才可以啊。

學習進度條

 

程式碼行數(新增/累積)

部落格量(新增/累積)

學習時間(新增/累積)

重要成長

目標

2000行

10篇

80小時

 

第一週

67/67

1/1

8/8

 

 

第六週

300/1564

1/5

8/52

 

 

參考資料

《Java2實用教程(第5版)》