JAVA筆記整理(六),JAVA中的多態

來源:互聯網
上載者:User

標籤:

       JAVA引用變數有兩個類型:一個是編譯時間類型,一個運行時類型

       編譯時間類型由聲明該變數時使用的類型決定,運行時類型由實際賦給該變數的對象決定。如果編譯時間類型和運行時類型不一樣,就形成了多態。

       因為子類其實是一個特殊的父類,因為JAVA允許把一個子類對象直接賦給一個父類引用變數,無須任何類型轉換,稱為向上轉型,由系統自動完成。

       當把一個子類對象直接賦給父類引用變數後,當運行時調用該引用變數的方法時,其方法行為總是表現出子類方法的行為特徵,而不是父類方法的行為特徵,這就可能出現:相同類型的變數、調用同一個方法時呈現出多種不同的行為特徵,這就是多態

       也就是說,當子類對象賦給父類引用變數時候,就發生了多態。在調用的時候,屬性還是直接調用父類的屬性,如果子類重寫了父類的方法,則調用子類的方法,否則繼續調用父類方法,不能調用子類專屬的方法

強制類型轉換

         編寫JAVA程式時,引用變數只能調用它編譯時間類型的方法,而不能調用它運行時類型的方法,即使它所引用的對象確實包含該方法。如果需要讓這個引用變數調用它運行時類型的方法,則必須把它強制類型轉換成運行時類型,強制類型轉換需要藉助於類型轉換運算子。

         類型轉換運算子是小括弧。

         基本類型之間的轉換隻能在數實值型別之間進行,這裡所說的數實值型別包括整數型、字元型、和浮點型。但數實值型別和布爾類型之間不能進行轉換。

         參考型別之間的轉換隻能在具有繼承關係的兩個類型之間進行,如果是兩個沒有任何繼承關係的類型,則無法進行類型轉換,否則編譯時間就會出現錯誤。如果視圖把一個父類執行個體轉換成子類執行個體,則這個對象必須實際上是子類執行個體才行,否則會出現ClassCastException異常

       使用instanceof運算子可以讓強制類型轉換更安全

 

instanceof關鍵字

    instanceof運算子的前一個運算元通常是一個參考型別變數,後一個運算元通常是一個類(也可以是一個介面),他用於判斷前面的對象是否是後面的類,或者其子類、實作類別的執行個體,如果是,則返回true,否則返回false

 

 

**如果子類重寫了父類的方法,那麼父類的建構函式中如果調用了被子類重寫的方法,則會產生null 指標

 

 

JAVA筆記整理(六),JAVA中的多態

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.