摘要:如果編譯時類型和運行時類型不一致,就可能出現所謂的多態。上面代碼中,引用變量比較特殊,它的編譯時類型是而運行時類型是當調用該引用變量的方法時,實際執行的是類中覆蓋后的方法,這就可能出現多態了。
Java引用變量有兩個類型,一個是編譯時類型,一個是運行時類型。
編譯時類型由聲明該變量時使用的類型決定,運行時類型由實際賦給該變量的對象決定。
如果編譯時類型和運行時類型不一致,就可能出現所謂的多態。
BaseClass testObj = new SubClass(); testObj.test();
上面代碼中,引用變量比較特殊,它的編譯時類型是BaseClass,而運行時類型是SubClass,當調用該引用變量的test()方法時,實際執行的是SubClass類中覆蓋后的test()方法,這就可能出現多態了。
因為子類其實是一種特殊的父類,因此java允許把一個子類對象直接賦給一個父類引用對象,無需任何類型轉換,或者被稱為向上轉型,向上轉型由系統自動完成。
上面testObj引用變量的編譯時類型是BaseClass,而運行時類型是SubClass,當運行時調用該引用變量的方法時,其方法和行為總是表現出子類方法的行為特征,而不是父類方法的行為特征,這就可能出現:相同類型的變量、調用同一個方法時呈現出不同的行為特征,這就是多態。
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://m.specialneedsforspecialkids.com/yun/68519.html
摘要:概念所謂多態,就是指一個引用變量類型在不同的情況下的多種狀態。需進行強制轉換有風險,最好使用進行判斷。繼承在多態中必須存在有繼承關系的子類和父類。在中有兩種形式可以實現多態繼承和接口。 概念 所謂多態,就是指一個引用變量(類型)在不同的情況下的多種狀態。也可以理解為,多態是指通過指向父類的指針,來調用在不同子類中實現的方法。多態性是對象多種表現形式的體現 多態性嚴格來說有兩種描述形式:...
摘要:當我們對一些函數發出調用的消息時,這些函數會返回不同的執行結果,這是多態性的一種體現,也是很多設計模式在中可以用高階函數來代替實現的原因。 PS:上一篇文章發表之后,很多朋友關注了本人的思否和掘金的博客,雖然關注的朋友還有有限,但足夠讓我把自己在技術上的問題積累分享給大家,也希望大家能夠喜歡,同時能動一動手指,給一顆心(贊),博主會持續更新下去 多態 本文是《javascript設計模...
摘要:中的多態引用的多態父類的引用是可以指向子類對象報錯方法多態動物具有吃的能力狗具有吃肉的能力狗具有看門的能力父類的引用是可以指向子類對象報錯 java中的多態 showImg(https://segmentfault.com/img/bVbnDYA?w=1138&h=612); showImg(https://segmentfault.com/img/bVbnD6B?w=344&h=17...
摘要:在面向對象的程序設計語言中,多態是繼數據抽象和繼承之后的第三種基本特征。 在面向對象的程序設計語言中,多態是繼數據抽象和繼承之后的第三種基本特征。 1.再論向上轉型 多態作用:消除類型之間的耦合關系. 2.轉機 綁定:將一個方法調用同一個方法主體關聯起來. 前期綁定:在程序執行前就進行綁定(面向過程語言默認綁定方式). 后期綁定:也叫動態綁定或運行時綁定,在運行時根據對象的類型進行綁...
摘要:為什么不是面向對象不是面向對象,因為它包含個原始數據類型,例如。自定義類加載器繼承的自定義類加載器。可以像下面這樣指定參數面試題面向對象,類加載器,基礎概念它們的關系如下啟動類加載器,實現,沒有父類。自定義類加載器,父類加載器為。 1. 為什么說Java是一門平臺無關語言? 平臺無關實際的含義是一次編寫到處運行。Java 能夠做到是因為它的字節碼(byte code)可以運行在任何操作...
閱讀 2485·2023-04-25 21:41
閱讀 1657·2021-09-22 15:17
閱讀 1928·2021-09-22 10:02
閱讀 2443·2021-09-10 11:21
閱讀 2585·2019-08-30 15:53
閱讀 1004·2019-08-30 15:44
閱讀 957·2019-08-30 13:46
閱讀 1145·2019-08-29 18:36