JAVA自學_語法——多型
阿新 • • 發佈:2022-05-05
一、多型定義:
同類型的物件,執行同一個行為,會表現出不同的行為特徵
多型常見形式:父親型別 物件名稱=new 子類構造器;——介面 物件名稱=new 實現類構造器(以前都是子類型別來new子類構造器,相當於把小範圍型別賦值給大範圍型別)
多型中成員訪問特點:方法呼叫時——(左邊是父類,右邊是子類構造器)編譯看左邊,執行看右邊;變數呼叫時,編譯看左邊,執行也看左邊(呼叫變數時去父類中找)
多型前提:得有繼承/實現關係,有父類引用指向子類物件,有子類的方法重寫
二、多型的優勢:
在多型形式下,右邊物件可以實現解耦合——右邊的物件可以隨便換,呼叫的方法不換 定義方法時,使用父類型別作為引數
問題:多型下不能使用子類的獨有功能(因為編譯看左邊,子類在右邊);而繼承的抽象方法二者裡面都有,所以可以呼叫
三、多型下如何呼叫子類的獨有功能:
引用資料型別的型別轉換:先判斷,再強制型別轉換——子類 物件變數=(子類)父類型別變數——Dog t =(Dog)a2;t.look();
有繼承或者實現關係編譯階段可以強轉(即使轉的型別不一樣也不會報錯),但是執行階段會報錯(烏龜不能被轉換成狗);故建議使用instanceof關鍵字判斷物件的真實型別,再進行強轉