20175318 2018-2019-2 《Java程序设计》第4周学习总结
教材學習總結
第五章 子類與繼承
- 每個子類只能有一個父類,而一個父類可以有多個子類。可以使用關鍵字extends來定義一個類的子類:
類在不加extends關鍵字時,默認為Object類,Object類是任何類(除了本身)的祖先類。
- 子類的繼承性
- 子類和父類在同一個包中時,子類繼承父類中不是private的成員變量和方法,且它們訪問權限保持不變。
- 子類和父類不在同一個包中時,子類不繼承private和友好訪問權限的成員變量和方法,只繼承protected和public。
如果一個類A想通過一個其他類B的子類C創造對象來調用它的變量或者方法:①若要調用的是子類C內部新定義的而不是繼承的,只要C與A同包即可; ②若要調用的是C繼承下來的,只要C所繼承的祖先類與A同包即可。
子類可以通過繼承的方法來操作未繼承的變量。
instanceof運算符:當左邊的操作元是右邊的類或子類所創造的對象時,運算結果是true,否則是false。
子類繼承的方法只能操作子類繼承和隱藏的成員變量。子類新定義的方法可以操作子類繼承和子類新聲明的成員變量,但無法操作子類隱藏的成員變量。
- 方法重寫:要求新的方法的類型與父類相應方法一致或者是父類的方法的類型的子類型,并且這個方法的名字、參數個數、參數的類型和父親的方法完全相同。例如:
重寫方法可以操作繼承的變量、方法,也可以操作子類新聲明的成員變量、方法,但無法操作被子類隱藏的成員變量。如果子類想要使用被隱藏的方法或者成員變量,需使用super。注意,重寫方法時不允許降低方法的訪問權限,但可以提高訪問權限。
- 在使用重寫時,注意區分重寫,重載,語法錯誤。
super的使用方法:通過命令super.[成員變量]和super.[方法]來分別使用被隱藏的變量和方法。
子類不繼承父類的構造方法。super必須是子類構造方法的頭一條語句。如果在子類中沒有寫出super關鍵字,默認地有super()調用。
在父類中定義多個構造方法時,應當包括一個不帶參數的構造方法,因為Java不會提供默認的構造方法(不帶參數的構造方法),會導致省略super時出現錯誤。
- final關鍵字:final關鍵字可以修飾類、成員變量和方法中的局部變量。
- 修飾類:被修飾的類不能有子類。
- 修飾父類的方法:子類不能對被修飾的方法進行重寫
- 修飾變量:被修飾的變量變為常量,常量在運行期間不能發生變化。
上轉型對象:通過把子類創建的對象的引用賦給父類創建的對象來得到上轉型對象。上轉型對象不能操作子類新增的成員變量與方法,但是可以操作子類繼承或隱藏的成員變量以及調用子類繼承的方法或重寫的實例方法。
如果子類重寫了父類的某個實例方法后,上轉型對象調用的是子類重寫的實例方法。
注意的是,如果子類重寫了父類的靜態方法,則子類對象的上轉型對象不能調用子類的重寫靜態方法,只能調用父類的靜態方法。
多態性:父類的方法被子類重寫時,可以各自產生自己的功能行為。
- 關鍵字abstract:
- 修飾方法:被修飾的方法只能聲明不能運行。
- 修飾類:被修飾的類中可以有abstract方法,也可以有非abstract方法。而沒被修飾的類只能有非abstract方法。
不允許使用final和abstract同時修飾一個方法或類。
不允許使用static修飾abstract方法。(abstract方法必須是實例方法)
abstract父類的非abstract子類必須重寫父類的abstract方法。
abstract的類只能聲明對象但是不能創建對象,但是該對象可以成為其子類的上轉型對象。
上轉型對象與對象:
使用多態進行程序設計的核心技術之一是使用上轉型對象(將abstract類聲明的對象作為其子類對象的上轉型對象)。abstract類在實際中很好用,因為它注重面向對象而不是面向類。
開-閉原則是對擴展開放,對修改關閉。遵守開閉原則的系統易于維護。
本周學習中遇到的問題和解決過程
問題1:第五章課后題有問:重寫方法的目的是什么?
解決方法:書中P121解釋為:子類在重寫可以繼承的方法時,可以完全按照自己的意圖編寫新的方法體,以便體現重寫方法的獨特的行為。重寫的作用中解釋:重寫是為了增強類的重用性和復用性,擴展性;重寫是對類中方法的擴充,因為繼承用的是父類的東西,重寫則不僅得到父類的東西,同時也加入了自己的東西。
問題2:為什么使用接口,而不是直接寫個方法實現呢?
解決方法:當子類有不同的父類時,但還要有同樣的行為標準時,可以使用同一個接口。
碼云鏈接
https://gitee.com/lhr0321/20175318_JAVA
代碼截圖
轉載于:https://www.cnblogs.com/L1079991001/p/10992012.html
總結
以上是生活随笔為你收集整理的20175318 2018-2019-2 《Java程序设计》第4周学习总结的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 上海房價
- 下一篇: java美元兑换,(Java实现) 美元