java多态和泛型_Java面向对象(二) 接口、多态和泛型
一、接口
二、多態(tài)
多態(tài)是同一個行為具有多個不同表現(xiàn)形式或形態(tài)的能力。
2.1 類型轉(zhuǎn)換
轉(zhuǎn)換方式
隱式 向上轉(zhuǎn)型
對于基本數(shù)據(jù)類型,存儲容量低的可自動向存儲容量高的類型轉(zhuǎn)換
對于引用變量,子類可被轉(zhuǎn)換為超類,可被賦給所屬類實(shí)現(xiàn)的接口的引用
顯式 向下轉(zhuǎn)型必須強(qiáng)制類型轉(zhuǎn)換,是顯示的 場合:賦值轉(zhuǎn)換 方法調(diào)用轉(zhuǎn)換 算術(shù)表達(dá)式轉(zhuǎn)換 字符串轉(zhuǎn)換
規(guī)則
基本類型的轉(zhuǎn)換
將值從一種類型轉(zhuǎn)換成另一種類型
引用變量的類型轉(zhuǎn)換
將引用轉(zhuǎn)換為另一種類型的引用,不改變對象本身的類型
轉(zhuǎn)換方式
向上轉(zhuǎn)型
轉(zhuǎn)換為任何一個(直接或間接)超類的類型
轉(zhuǎn)換為對象所屬的類(或其超類)實(shí)現(xiàn)的一個接口
向下轉(zhuǎn)型(唯一情況)
被轉(zhuǎn)為引用指向的對象的類型
向上轉(zhuǎn)型(當(dāng)一個引用被轉(zhuǎn)為其超類的引用)后,通過它能夠訪問的只有在超類中聲明過的方法。
2.2 方法調(diào)用綁定
多態(tài)存在的三個必要條件:
繼承/接口實(shí)現(xiàn)
重寫/接口方法實(shí)現(xiàn)
父類引用指向子類對象/接口類型的引用指向了一個實(shí)現(xiàn)此接口的對象,即向上轉(zhuǎn)型
簡而言之,向上轉(zhuǎn)型、繼承、重寫是三大前提條件
將一個方法調(diào)用同一個方法主體關(guān)聯(lián)起來被稱作綁定。若程序執(zhí)行前進(jìn)行綁定(如果有的話,由編譯器和連接程序?qū)崿F(xiàn)),叫做前期綁定。在運(yùn)行時根據(jù)對象的類型進(jìn)行綁定,叫做后期綁定或動態(tài)綁定。
在動態(tài)綁定中,對象中包含類的信息,編譯器一直不知道對象的類型,但是方法調(diào)用機(jī)制能找到正確的方法體,并加以調(diào)用。
Java中的多態(tài)是通過方法的動態(tài)綁定機(jī)制實(shí)現(xiàn)的
只有普通方法調(diào)用可以是多態(tài)的,成員變量和靜態(tài)方法都沒有多態(tài),直接訪問某個域(成員變量),這個訪問將在編譯期進(jìn)行解析,任何域訪問操作都由編譯器解析。
因此將屬性設(shè)為private,不可直接訪問屬性,這里帶來了一個好處,就是可以避免誤以為父類引用能多態(tài)的使用子類的屬性。
三、泛型
接口泛型
方法泛型
類泛型
泛型中的通配符
泛型中的限制
總結(jié)
以上是生活随笔為你收集整理的java多态和泛型_Java面向对象(二) 接口、多态和泛型的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: java数据类型_JAVA基础篇(数据类
- 下一篇: 定期定量采购_企业常见的六种采购策略