php的三元運算子
阿新 • • 發佈:2020-11-04
多型:
多型是繼封裝、繼承之後,Java面向物件中的第三個特性
同一行為,通過不同的事物,可以體現出不同的形態。多型,描述的就是這樣的狀態
定義:
是指同一行為(方法),具有多個不同的表現形式
多型的前提:
1.繼承或者實現【二選其一】
2.方法的重寫[意義提現:【不重寫,無意義】
3.父類引用指向子類物件【格式提現】
多型的體現:
格式:(型別轉換 父類的轉子類)
父類型別 變數名 = new 子類型別();
變數名.方法名();
父類型別:指子類物件繼承的父類型別,或者實現的父介面型別。
如: Fu fu = new Zi(); fh.method();
備註:當你在使用多型的時候,程式會首先檢查父類中是否含有該方法,
如果沒有,擇編譯錯誤; 如果有,執行的是子類重寫之後的方法。
多型的好處:
在程式開發過程中,父類型別一般作為方法形式引數,傳遞子類物件給方法,
當你進行方法的呼叫,更能體現出多型的擴充套件性和便利性。
總結:由於多型特性的支援,不僅僅是替代,在擴充套件性方面,無論之後再出現多少個字類,
我們不需要再重複的定義showXxxEat()方法,直接使用showAnimalEat()方法。
所以多型的好處,體現在可以使程式編寫更簡單,並且有良好的擴充套件性。
引用型別的轉化
引用型別就好比多型中的父類引用指向子類就是
多型的轉型為:向上轉型和向下轉型
向上轉型:
多型本身是子類型別向上轉換的過程,這個過程是預設的。
當父類引用指向一個子類物件的時候,便是向上轉型。
格式:
父類型別 變數名 = new 子類型別(); 如:Animal animal = new Cat();
向下轉型:
父類型別向子類型別向下轉換的過程,這個過程是強制的。一個已經向上轉型的子類物件,將父類引用轉換為子類引用,可以使用強制型別轉換格式,便是向下轉型。
格式:
子類型別 變數名 = (子類型別)父類變數名; 如 Cat cat = (Cat) animal;
為什麼要轉型?
當使用多型方式呼叫方法時,首先會檢查父類中是否含有該方法,如果沒有,則編譯錯誤,進一步說,不能直接呼叫子類擁有而父類沒有的方法。所以,想要呼叫子類特有的方法,必須向下轉型。
轉型的異常:
兩個型別沒有任何繼承關係,不符合型別轉換的定義。為了避免ClassCastException的發生,Java提供了instanceof關鍵字,給引用變數做型別校驗。
格式:
變數名 instanceof 資料型別 先拿變數名與資料型別判斷 如果變數名屬於該型別資料 返回true 如果變數名不屬於該資料型別 返回false