1 向上轉型(不需要強制轉換): 由抽象度低的類向抽象度高的類轉型(子類—父類)
好處:可以操作和使用子類繼承或重寫的方法
失處:失去對子類新增成員變量和新增成員方法的操作和使用
2 向下轉型(需要強制轉換): 由抽象度高的類向抽象度低高的類轉型(父類—子類)
sub s=(sub)new Father();//運行時出錯,編譯通過(父類不可以強制轉換成子類,子類包含父類所沒有的變量和方法)
異常:Exception in thread "main" java.lang.ClassCastException:
轉換對象是在運行時進行轉換的
編譯運行都正常通過
因為此時f是一個子類實體對象,有具體的引用地址,強制轉換成子類變量,引用地址傳遞給s
3 可以使用 引用變量 instanceof 類名 來判斷該引用型變量所“指向”的對象是否屬於該類或該類的子類。
父類引用指向子類對象。子類和父類中定義同名的變量時,僅僅是隱藏了,變量沒有多態性;而對於覆蓋的方法,Java表現出多態性,會調用更具體的子類里面的方法,無論從哪里調用,無論使用什么引用類型調用。(引用)
