Java中instanceof關(guān)鍵字實(shí)例講解
1.向上轉(zhuǎn)型 向下轉(zhuǎn)型
2.強(qiáng)制類型轉(zhuǎn)換的應(yīng)用
應(yīng)用多態(tài)性時由于引用為父類類型,導(dǎo)致編譯時只能調(diào)用父類中聲明的屬性和方法。子類特有的屬性和方法不能調(diào)用。因此可將父類引用強(qiáng)制轉(zhuǎn)換為子類引用,則可調(diào)用子類特有方法。
class Animal { public void shout() { System.out.println("Animal is shouting "); } } class Dog extends Animal { public void shout() { System.out.println("汪 汪 汪"); } public void skill() { System.out.println("Dog can guard home"); } } class Cat extends Animal { public void shout() { System.out.println("喵 喵 喵"); } } public static void main(String [] args) { Animal animalD =new Dog(); // animalD.skill() 報錯,因?yàn)锳nimal類無skill方法 Dog dog=(Dog)animalD; dog.skill(); //輸出 Dog can guard home }
3.instanceof 關(guān)鍵字使用
a instanceof A : 判斷對象a是否是類A的實(shí)例。如果是,返回true;否則返回false。
public static void main(String [] args) { Animal animalD =new Dog(); if(animalD instanceof Dog) { System.out.println("true");//輸出true } }
4.測試舉例
編譯通過,運(yùn)行不通過
Animal animal=new Dog(); Cat cat=(Cat)animal // 因?yàn)镃at和Dog無子父類關(guān)系 Animal animal=new Animal(); Dog dog=(Dog)animal; //animal必須指向Dog類或Dog類子類
編譯不通過
Dog dog=new Cat(); //直接不符合多態(tài)性定義
編譯通過,運(yùn)行通過
Object object=new Dog(); Animal animal=(Animal)object
5.強(qiáng)制類型轉(zhuǎn)換成功總結(jié)
子類賦值給直接父類引用(多態(tài)),然后直接父類引用再強(qiáng)制轉(zhuǎn)換成子類子類賦值給間接父類引用(多態(tài)),然后間接父類引用可以強(qiáng)制轉(zhuǎn)換成子類或者子類的父類
到此這篇關(guān)于Java中instanceof關(guān)鍵字實(shí)例講解的文章就介紹到這了,更多相關(guān)Java instanceof關(guān)鍵字內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
- Java中instanceOf關(guān)鍵字的用法及特性詳解
- Java深入講解instanceof關(guān)鍵字的使用
- Java關(guān)鍵字之instanceof詳解
- Java instanceof關(guān)鍵字用法詳解及注意事項
- java中instanceof 關(guān)鍵字作用和實(shí)際用途詳解
- Java關(guān)鍵字instanceof用法及實(shí)現(xiàn)策略
- Java關(guān)鍵字instanceof的兩種用法實(shí)例
- Java instanceof關(guān)鍵字的的進(jìn)一步理解
- Java中instanceof關(guān)鍵字的用法總結(jié)
- Java中instanceof 關(guān)鍵字的使用
相關(guān)文章
Java根據(jù)控制臺實(shí)現(xiàn)定位異常
這篇文章主要介紹了Java根據(jù)控制臺定位異常,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下2020-05-05SpringBoot+MybatisPlus+Mysql+Sharding-JDBC分庫分表
本文主要介紹了SpringBoot+MybatisPlus+Mysql+Sharding-JDBC分庫分表,文中通過示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下2022-03-03BeanUtils.copyProperties擴(kuò)展--實(shí)現(xiàn)String轉(zhuǎn)Date
這篇文章主要介紹了BeanUtils.copyProperties擴(kuò)展--實(shí)現(xiàn)String轉(zhuǎn)Date操作,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2021-06-06