201711671235學習《java程式設計》第五週學習總結
教材學習內容總結
1.子類和父類
a.繼承是一種由已有的類建立新類的機制
b.java不支援多重繼承,即子類只能有一個父類
一般類(父類:公有屬性) |
子類(子類:繼承/新定義的屬性和行為) |
c.class 子類名 extends 父類名{}
2.子類的繼承性
a.子類和父類在同一個包中繼承性:子類自然地繼承了其父類中不是private的成員變數和方法
b子類和父類不在同一個包中繼承性:子類自然地繼承了其父類中不是private和friendly的成員變數和方法
c.protected的進一步說明:
以上情況obiect物件可以訪問protected成員變數和方法
3.子類和物件
a.子類構造方法建立物件->父類的成員變數也被分配空間
b.關於instance of:物件 instance of 類(左邊物件是否為右邊的類或子類所建立的物件)返回ture or false
4.成員變數的隱藏和方法重寫
a.
子類 | 父類 |
成員變數同名 | |
隱藏從父類繼承的成員變數 | |
子類物件以及子類自己定義的方法操作子類重新宣告的成員變數 | |
子類繼承的方法所操作的成員變數是被子類繼承或隱藏的成員變數 |
b.
子類繼承自父類的方法訪問/呼叫 | 子類新定義的方法訪問/呼叫 |
繼承和隱藏的成員變數 | 繼承和新宣告的成員變數 |
用super關鍵字操作隱藏的成員變數 |
c.方法重寫(方法覆蓋):可以隱藏已繼承的方法
語法規則:返回型別/父類的子型別(返回型別為類型別) 方法名(引數個數、型別):與父類一樣
注:假如People只一個父類,它的子類可以為Student,即子型別為Student
重寫方法是否能操作 | |
繼承成員變數和方法 | Yes |
子類定義的成員變數和方法 | Yes |
被子類隱藏的成員變數和方法 | No |
注意事項:重寫父類方法時,不允許降低方法的訪問許可權,可以提高訪問許可權
5.super關鍵字
a.用super操作被隱藏的成員變數和方法
b.使用super呼叫父類的構造方法:如果子類的構造方法沒有明顯的指明使用父類的哪個構造方法,子類就呼叫父類的不帶引數的構造方法,且子類不繼承父類的構造方法
6.final關鍵詞
a.final+成員變數|區域性變數=常量
b.final class 類名{}:該類不能被繼承,不能有子類
c.父類中:final+方法:不允許子類重寫改方法
7.物件上轉型物件
class B extends A{}
A a;
B b=new B();
a=b;
a是b的上轉型物件
上轉型物件是否操作 | |
子類新增的成員變數和方法 | No |
子類繼承或隱藏的成員變數 | Yes |
子類繼承的方法或子類重寫的例項方法(子類物件呼叫這些方法) | Yes |
a.父類建立物件(不一定等於)子類物件的上轉型物件
b.物件上轉型物件強制轉換到子類物件:子類名 子類物件=(子類名)父類物件名 此時子類物件具備子類所有屬性與功能
c.不允許:子類 物件=父類建立物件的引用
d.
8.繼承與多型
上轉型是多型的表現形態,多型性是指父類的某個方法被其子類重寫,可以各自產生自己的功能行為
9.abstract類和abstract方法
a.用關鍵字abstract修飾的類成為abstract類(抽象類)
b.abstract方法只允許宣告不允許實現(沒有方法體)
c.因為abstract類要被繼承,abstract方法要被重寫·,所以不允許final 和 abstract 同時修飾一個方法或類 ,也不允許 static 修飾 abstract方法(即abstract方法必須是例項方法)
abstract類 |
abstract方法 |
非abstract方法 |
d.abstract類不能用new運算子建立物件
e.非abstract類繼承abstract類時,它必須重寫abstract方法(即去掉abstract,給出方法體),如果是abstract類繼承abstract類,可以重寫/繼承abstract方法
10.面向抽象程式設計
使用多型進行程式設計的核心技術之一是使用上轉型物件,即將abstract類宣告的物件作為其子類的物件的上轉型物件,那麼這個上轉型物件就可以呼叫子類重寫的方法
教材學習中的問題和解決過程
子類繼承/新定義/重寫的訪問的訪問許可權容易混淆:畫圖分析
上轉型物件的訪問許可權:畫圖分析
程式碼行數(新增/累積) | 部落格量(新增/累積) | 學習時間(新增/累積) | 重要成長 | |
目標 | 5000行 | 20篇 | 400小時 | 會用java語言獨立設計程式 |
第一週 | 13/13 | 1/1 | 5/5 | 學會使用jdk以及對java源程式語句的基本注意事項有所瞭解 |
第二週 | 140/143 | 1/2 | 10/15 | 學會java基本資料型別與陣列和c語言/c++在表達和用法上的相同/不同之處 |
第三週 | 276/419 | 1/3 | 20/35 | java中運算子,表示式和語句的表現形式,類的宣告,定義方法 |
第四周 | 600/1019 | 1/4 | 30/45 | 類和物件 |
第五週 | 150/1169 |
1/5 | 10/55 | 繼承的作用,子類和父類的繼承性,子類繼承父類後方法的訪問許可權以及各種操作 |
參考文獻
《java2實用教程(第5版)》