簡(jiǎn)單了解Java中多態(tài)的基礎(chǔ)知識(shí)
一、多態(tài)
多態(tài)分為兩種:(1)引用的多態(tài)、(2)方法的多態(tài)
引用的多態(tài):
父類(lèi)的引用可以指向本類(lèi)的對(duì)象;
父類(lèi)的引用可以指向子類(lèi)的對(duì)象;
注意:子類(lèi)的對(duì)象不可以指向父類(lèi)的對(duì)象,如下圖所示
方法的多態(tài):
創(chuàng)建本類(lèi)對(duì)象時(shí),調(diào)用的方法為本類(lèi)的方法;
創(chuàng)建子類(lèi)對(duì)象時(shí),調(diào)用的方法為子類(lèi)重寫(xiě)的方法或者繼承的方法;
注意:父類(lèi)的引用調(diào)用的方法不能是子類(lèi)獨(dú)有的方法,必須是從父類(lèi)繼承的方法或重寫(xiě)父類(lèi)的方法。、
二、多態(tài)中的引用類(lèi)型轉(zhuǎn)換
1、向上類(lèi)型轉(zhuǎn)換(隱式/自動(dòng)類(lèi)型轉(zhuǎn)換),是小類(lèi)型到大類(lèi)型的轉(zhuǎn)換。不存在風(fēng)險(xiǎn)。
2、向下類(lèi)型轉(zhuǎn)換(強(qiáng)制類(lèi)型轉(zhuǎn)換),是大類(lèi)型向小類(lèi)型轉(zhuǎn)換。有風(fēng)險(xiǎn)。
3、instanceof運(yùn)算符,來(lái)解決引用對(duì)象的類(lèi)型,避免類(lèi)型轉(zhuǎn)換的安全問(wèn)題。(animal instanceof Cat)
三、抽象類(lèi)
1、抽象類(lèi)前使用abstract關(guān)鍵字修飾,則該類(lèi)為抽象類(lèi);
2、在某種情況下,某個(gè)父類(lèi)只是知道某個(gè)子類(lèi)應(yīng)該包含怎樣的方法,但無(wú)法準(zhǔn)確知道這些子類(lèi)如何實(shí)現(xiàn)這些方法。
3、使用規(guī)則:
(1)abstract定義抽象類(lèi);
(2)abstract定義抽象方法,只有聲明,不需要實(shí)現(xiàn);
(3)包含抽象方法的類(lèi)是抽象類(lèi);
(4)抽象類(lèi)中可以包含普通方法,也可以沒(méi)有抽象方法;
(5)抽象類(lèi)不能直接創(chuàng)建,可以定義引用變量;
4、抽象方法沒(méi)有方法體依分號(hào)結(jié)尾;
四、接口
1、接口的概念;一種特殊的類(lèi),由全局常量和公共的抽象的方法所組成;
2、類(lèi)是一種具體實(shí)現(xiàn)體,而接口則定義了某一批類(lèi)所需要遵守的規(guī)范,接口不關(guān)心這些類(lèi)的內(nèi)部數(shù)據(jù),也不關(guān)心這些類(lèi)里方法的實(shí)現(xiàn)細(xì)節(jié),它只規(guī)定這些類(lèi)里必須提供某些方法;
3、定義接口用interface關(guān)鍵字;public (abstract) interface ,接口可以繼承多個(gè)父接口,這一點(diǎn)和類(lèi)區(qū)分 ;
接口中定義的常量,即使定義時(shí)沒(méi)有添加public static final修飾符,系統(tǒng)也會(huì)自動(dòng)的添加;
接口中的方法總是抽象方法,即使定義的時(shí)候不添加public abstract,系統(tǒng)也會(huì)自動(dòng)加上;
4、可以用一個(gè)接口的引用指向一個(gè)實(shí)現(xiàn)了接口的對(duì)象
5、使用匿名內(nèi)部類(lèi)實(shí)現(xiàn)接口——兩種方法
以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
- 關(guān)于Java三大特性之多態(tài)的總結(jié)
- java對(duì)象類(lèi)型轉(zhuǎn)換和多態(tài)性(實(shí)例講解)
- Java面向?qū)ο缶幊蹋ǚ庋b/繼承/多態(tài))實(shí)例解析
- java中多態(tài)概念、實(shí)現(xiàn)原理詳解
- Java多態(tài)和實(shí)現(xiàn)接口的類(lèi)的對(duì)象賦值給接口引用的方法(推薦)
- java 多態(tài)性詳解及常見(jiàn)面試題
- 淺談java多態(tài)的實(shí)現(xiàn)主要體現(xiàn)在哪些方面
- 詳解Java多態(tài)對(duì)象的類(lèi)型轉(zhuǎn)換與動(dòng)態(tài)綁定
相關(guān)文章
使用Spring動(dòng)態(tài)修改bean屬性的key
這篇文章主要介紹了使用Spring動(dòng)態(tài)修改bean屬性的key方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2024-05-05Java 根據(jù)網(wǎng)絡(luò)URL獲取該網(wǎng)頁(yè)上面所有的img標(biāo)簽并下載圖片
這篇文章主要介紹了Java 根據(jù)網(wǎng)絡(luò)URL獲取該網(wǎng)頁(yè)上面所有的img標(biāo)簽并下載圖片,幫助大家更好的理解和使用Java,感興趣的朋友可以了解下2020-11-11SpringBoot過(guò)濾敏感詞的兩種實(shí)現(xiàn)方式
Spring Boot本身并不直接提供過(guò)濾敏感詞的功能,但你可以使用第三方庫(kù)或者自定義過(guò)濾器來(lái)實(shí)現(xiàn)這個(gè)需求,所以本文給大家介紹了SpringBoot過(guò)濾敏感詞的兩種實(shí)現(xiàn)方式,感興趣的朋友可以參考下2024-06-06springboot+vue實(shí)現(xiàn)websocket配置過(guò)程解析
這篇文章主要介紹了springboot+vue實(shí)現(xiàn)websocket配置過(guò)程解析,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2020-04-04java 流操作對(duì)文件的分割和合并的實(shí)例詳解
這篇文章主要介紹了java 流操作對(duì)文件的分割和合并的實(shí)例詳解的相關(guān)資料,希望通過(guò)本文能幫助到大家,讓大家理解掌握這部分內(nèi)容,需要的朋友可以參考下2017-10-10Spring Boot集成Mybatis中如何顯示日志的實(shí)現(xiàn)
這篇文章主要介紹了Spring Boot集成Mybatis中如何顯示日志的實(shí)現(xiàn),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2020-07-07