201711671118《Java程式設計》第五章總結
5.1子類與父類
①JAVA不支援多重繼承,即子類只能有一個父類。
②使用關鍵字extends來定義一個類的子類。如:class Student extends People{...}
③Object是所有類的祖先類。如果一個類(除了Object類)的宣告中沒有使用extends關鍵字,這個類被系統預設為Object的子類。
5.2子類的繼承性
①子類和父類在同一個包中,則子類繼承父類中非private的成員變數和方法,繼承後的變數和方法的訪問許可權不變,不在同一個包時,不繼承private和友好訪問許可權的成員變數和方法。
②其他類要訪問由protected類繼承的變數和方法,只有和該類的原來存在的類在同一個包才能訪問。
5.3 子類和物件
①同一個包子類繼承父類時,繼承非private變數(不同包private和友好),但是父類的所有變數都會分配空間。因為子類從父類繼承的方法可能會操作這些沒有被繼承的變數。
②子類與繼承的父類的變數名字相同時,父類的成員變數會被隱藏。
③子類物件可以通過super來呼叫被隱藏或被繼承的成員變數。
④子類繼承的方法只能操作子類繼承和隱藏的成員變數。
5.4方法重寫(方法覆蓋)
①子類通過重寫可以隱藏已繼承的方法。
②方法重寫是指子類中定義一個1方法,這個方法的型別與父類的方法的型別一致或者是父類方法的子型別,並且名字、引數個數、引數型別和父類的方法完全相同。
③重寫目的:子類通過方法重寫隱隱藏程序的方法,子類通過方法重寫可以吧父類的狀態和行為改變為自身的狀態和行為。
④重寫的注意事項:重寫父類的方法時,不允許降低方法的訪問許可權,但可以提高訪問許可權。
5.5 super關鍵字
①super關鍵字可以訪問被隱藏的變數和方法。
②當用子類的構造方法建立一個子類的物件時,子類的構造方法總是先呼叫父類的某個構造方法,如果子類的構造方法沒有明顯證明使用父類的哪個構造方法,子類會呼叫父類的構造方法。
③子類不繼承父類的構造方法。因此,子類在其構造方法中使用super來呼叫父類的構造方法,而且super必須是子類構造方法的頭一句,如果子類沒有明顯寫出super關鍵字來呼叫父類的某個構造方法,那麼預設有:super();
④當在父類定義多個構造方法時,應當包括一個不帶引數的構造方法,防止子類省略super出現錯誤。
5.6 final關鍵字
①final關鍵字可以修飾類、成員變數和方法中的區域性變數。
②final類不能被繼承、final方法不能被重寫、final修飾變數變為常量,宣告時必須指定該常量的值,不能修改。
5.7 上轉型物件
①物件的上轉型物件的實體是子類負責建立的(父類物件接受子類實體),上轉型物件會失去原物件的一些功能。
②上轉型物件不能操作子類新增的成員變數,不能呼叫新增的方法。
③上轉型物件可以訪問子類繼承或者隱藏的成員變數和例項方法。
④可以將物件的上轉型物件再簽字轉換到一個子類物件,這時,該子類物件又具備了子類的所有屬性和功能。
⑤不可以將父類將父類建立的物件的引用賦值給子類宣告物件。
⑥多型性就是指父類的某個方法被其子類重寫時,可以各自產生自己的功能行為。
5.9 abstract類和abstract方法
①關鍵字abstract修飾的類成為abstract類(抽象類),關鍵字abstract修飾的方法成為abstract方法(抽象方法)。
②對於abstract方法,只允許宣告,不允許實現,而且不允許使用final和abstract同時修飾一個方法或類,也不允許使用static修飾abstract方法,abstract方法必須是例項方法。
③非abstract類中不可以有abstract方法,而abstract類中可以有abstract方法,也可以有非abstract方法。abstract類裡可以沒有abstract方法。
④abstract類不能用new運算子建立物件,如果一個非抽象類是某個抽象類的子類,那麼它必須重寫父類的所有抽象方法。
⑤如果一個abstract類是一個abstract類的子類,那麼它可以重寫父類的abstract方法,也可以繼承父類的abstract方法。
⑥abstract類不可以建立物件,但是可以作為其子類的上轉型物件。
5.11 開閉原則
開閉原則就是讓設計的系統對擴充套件開放,對修改關閉。本質上指系統增加新的模組時,不需要修改現有的模組。