面向对象多态
一、多態【子類就是父類】
1、 為什么使用多態
提高程序可擴展性,可維護性,提高代碼可重用性
2、 什么是多態
具有表現多種形態能力的特征
同一個實現接口,使用不同的實例而執行不同的操作
3、 如何使用多態
l? 方法的參數類型是父類
訪問修飾符 返回類型 方法名(父類名 對象名){
……………………………………………….
}
n? 調用方法時,可以傳遞子類的對象
l? 父(子)類名 對象 = new 子類名();
l? 方法名(子類對象);
l? 方法的返回類型是父類
訪問修飾符 父類名 方法名([參數列表]){
??????? return 父類對象或子類對象;
}
4、 多態中子類和父類之間的轉換
a)??子類到父類的轉換(向上轉換)
父類 對象名 = new 子類();//自動進行轉換
對象名.方法名([值]);
??? ??????????? 向上轉換的使用規則:
l? 父類引用指向子類對象時稱為向上轉換或轉型(upcasting),自動進行類型轉換
l? 通過父類引用變量,調用的方法是子類覆蓋(重寫)或繼承父類的方法
l? 通過父類引用變量,無法調用子類特有的方法
b)父類到子類的轉換(向下轉換)——強制類型轉換,還原對象的真實面目(具體是哪種子類)
??????????????父類 對象名 = new 子類();
??????????????? 對象名.子類方法();//編譯有錯誤
?????? 應修改為:
??????????????? 父類 對象名 = new 子類();
??????????????? 子類 子類對象 =(子類)對象名;
??????????????? 子類對象.子類方法();
?
??? ??? c)、運算符instanceof
l? 作用:避免父類向子類進行轉換時出現異常,進行類型的判斷(判斷對象是否屬于一個類或實現了一個接口,返回一個布爾類型的值【true或false】)
l? 注意:該運算符,通常和強制類型轉換結合使用
if(對象名 instanceof 類名){
????類名 對象=(類名)對象名;
}
對象名和類名必須存在繼承關系,否則is語句編譯錯誤
轉載于:https://www.cnblogs.com/shuchongzeishuai/p/6991115.html
總結
- 上一篇: 数据库-索引
- 下一篇: 【bzoj3280】小R的烦恼 费用流