1. 程式人生 > 其它 >JAVA自學_語法——多型

JAVA自學_語法——多型

一、多型定義:

  同類型的物件,執行同一個行為,會表現出不同的行為特徵

  多型常見形式:父親型別 物件名稱=new 子類構造器;——介面 物件名稱=new 實現類構造器(以前都是子類型別來new子類構造器,相當於把小範圍型別賦值給大範圍型別)

  多型中成員訪問特點:方法呼叫時——(左邊是父類,右邊是子類構造器)編譯看左邊,執行看右邊;變數呼叫時,編譯看左邊,執行也看左邊(呼叫變數時去父類中找)

多型前提:得有繼承/實現關係,有父類引用指向子類物件,有子類的方法重寫

二、多型的優勢:

  在多型形式下,右邊物件可以實現解耦合——右邊的物件可以隨便換,呼叫的方法不換    定義方法時,使用父類型別作為引數

,該方法可以接收此父類的一切子類物件(也稱為物件回撥)

  問題:多型下不能使用子類的獨有功能(因為編譯看左邊,子類在右邊);而繼承的抽象方法二者裡面都有,所以可以呼叫

三、多型下如何呼叫子類的獨有功能:

  引用資料型別的型別轉換:先判斷,再強制型別轉換——子類 物件變數=(子類)父類型別變數——Dog t =(Dog)a2;t.look();

  有繼承或者實現關係編譯階段可以強轉(即使轉的型別不一樣也不會報錯),但是執行階段會報錯(烏龜不能被轉換成狗);故建議使用instanceof關鍵字判斷物件的真實型別,再進行強轉