標籤:繼承 多態 super關鍵字 instanceof equals方法
1. 關於繼承的規則:子類不能繼承父類中私人的成員變數和方法
2. 覆蓋方法必須和被覆蓋方法具有相同的方法名、參數列表和傳回值類型,並且不能使用比被覆蓋方法更嚴格的訪問限制
3. super:是在子類對象方法中對父類對象的引用
-使用:
1) 在子類對象的方法中引用父類對象的成員
public String getInfo(){
return super.getInfo() + ", info" + info;
}
2) 在子類的構造器中調用父類的構造器
- 可以在子類中通過 super(參數列表) 的方式來調用父類的構造器
- 預設情況下子類的構造器調用父類的無參構造器
public Person(){
super();
}
- 若父類定義了帶參數的構造器,則系統將不再為父類提供無參構造器,而子類的構造器中必須調用父類的一個構造器,這時:
① 父類顯示的定義一個無參構造器
② 在子類的構造器中顯式的調用父類的帶參構造器
- 與 this 類似, super(參數列表) 必須放在構造器的第一行,這說明 this(參數列表) 和 super(參數列表) 不能同時出現
4. 多態:同樣類型的變數,調用同樣的方法 卻產生完全不同的行為
- 當父類的變數指向一個子類的對象,調用父類中已經被重寫的方法的時候
- 在多態的情況下(當父類的變數指向一個子類的對象),不能調用子類新添加的方法
- 在多態的情況下,可以對對象進行強制類型轉換
1) 只有在具有父子關係的情況下才可以進行強制類型轉換
2) 父類的對象可以轉換為任何子類的類型,但有可能會發生 java.lang.ClassCastException
5. instanceof 操作符:
- x instanceof A 檢驗 x 是否為類 A 的對象,傳回值為 boolean 型。
- 要求 x 所屬的類與類 A 必須是子類和父類的關係,否則編譯出錯
6. Java 的強制類型轉換:
- 從子類到父類的類型可以自動進行
- 父類到子類必須強制轉換
- 無繼承關係的參考型別的轉換時非法的
7. equals 與 ==
1) ==
- 參考型別比較引用 (是否指向同一個對象)
- 符號兩邊的資料類型必須可相容,否則編譯出錯
2) equals()
- 只能比較參考型別,其作用與 "==" 相同,比較是否指向同一個對象
- 當用 equals() 方法進行比較時,對類 File、String、Date 及封裝類 (Wrapper Class) 來說是比較類型及內容二不考慮引用的是否是同一個對象,因為他們重寫了 equals() 方法
Java_Day03 Java基礎