1.繼承的概念
java繼承是使用已存在的類的定義作爲基礎建立新類的技術,新類的定義可以增加新的屬性或新的方法,也可以用已存在的類的屬性和方法。這樣可以重複使用之前的代碼,大大縮短開發週期,降低開發費用。
2.繼承需要注意的點
- java中用關鍵字extends表示類間的繼承關係。
- 子類可以繼承父類中訪問權限爲public和protected的屬性和方法,不可重寫。
- 子類可以繼承在同一個包中父類中訪問權限爲默認權限的屬性和方法。
- 子類不能繼承父類的構造方法。
- 子類如果有和父類同名、同參數類型的方法,那麼子類對象在調用該方法時,調用的是父類的方法,這就重寫。如果想調用父類的同名方法和屬性,需要用super關鍵字。
- 用fial修飾的類不能被繼承,final修飾的方法可以繼承,不可重寫。
- java中沒有多重繼承。
3.重載和重寫的區別
- 重載的定義:在同一個類中,有兩個及兩個以上的方法具有相同的方法名,但參數列表不同。
- 重載參數列表的不同表現爲:參數的個數不同 ;參數的類型不同;參數類型排列順序不同;注意:如果僅僅只有返回值的類型不同的方法不叫重載方法。
- 重寫的定義: 子類對父類中同名、同參數的方法進行覆蓋,就是重寫。
- 重寫需要滿足的條件:子類中重寫方法與父類中被重寫的方法同名、同參數類型、同參數順序和個數 ;還有返回值的類型必須相同;重寫方法的訪問權限不能比父類中的方法 訪問權限小。用final修飾的方法不能被重寫。
4.屬性覆蓋
子類和父類中的屬性 命名相同時,當子類創建 的對象調用屬性時,此時對象的屬性爲子類的屬性,子類的屬性會覆蓋父類的屬性;當父類創建對象用子類實現時,此時對象的屬性爲父類屬性,不會被子類覆蓋。
5.父類和子類成員初始化過程
父類的靜態初始化塊--->子類的靜態初始化--->父類的非靜態初始化塊--->父類的構造--->子類的非靜態初始化塊--->子類的構造
6.多態
多態是指通過基類對象調用一個基類和子類都有的方法時,在運行時才確定到底調用的是基類方法還是子類方法,多態是動態連編的。多態的好處是增加了程序的可擴展性 。多態的三種形式:
- 父類調用子類的任何對象
- 利用參數的不同實現多態
- 利用返回類型的不同實現多態
7.this和super關鍵字
this代表當前對象,super代表當前對象的父類。this的作用有一下兩個:
- 一個構造函數調用另一個調用函數,對構造函數的調用必須是第一條語句。
- 將對象自身作爲參數來調用一個函數。
super的用法:在子類中調用父類的同名方法,或者在子類的構造函數中調用父類的構造函數,也必須是第一條語句。
8.final關鍵字
- 用final關鍵字定義的常量,在初始化或第一次賦值後,其值不可更改。
- final對象的值不能被改變。
- final方法不能被重置。
- final 類不能被繼承;所有的方法都是final的,但屬性可以不是final的。
9. 多態的類型轉換
- 向上轉型:父類的引用指向子類對象。向上轉型,只能調用父類的方法,不能子類特有的方法。向上轉型是安全的。
- 向下轉型:子類的引用指向父類對象。向下轉型是不安全的。但是可以進行強制類型轉換。