您好,登錄后才能下訂單哦!
這篇“Java中如何使用instanceof關(guān)鍵字”文章,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們一定要參考一下,對(duì)于“Java中如何使用instanceof關(guān)鍵字”,小編整理了以下知識(shí)點(diǎn),請(qǐng)大家跟著小編的步伐一步一步的慢慢理解,接下來(lái)就讓我們進(jìn)入主題吧。
應(yīng)用多態(tài)性時(shí)由于引用為父類(lèi)類(lèi)型,導(dǎo)致編譯時(shí)只能調(diào)用父類(lèi)中聲明的屬性和方法。子類(lèi)特有的屬性和方法不能調(diào)用。因此可將父類(lèi)引用強(qiáng)制轉(zhuǎn)換為子類(lèi)引用,則可調(diào)用子類(lèi)特有方法。
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() 報(bào)錯(cuò),因?yàn)锳nimal類(lèi)無(wú)skill方法 Dog dog=(Dog)animalD; dog.skill(); //輸出 Dog can guard home }
a instanceof A : 判斷對(duì)象a是否是類(lèi)A的實(shí)例。如果是,返回true;否則返回false。
public static void main(String [] args) { Animal animalD =new Dog(); if(animalD instanceof Dog) { System.out.println("true");//輸出true } }
編譯通過(guò),運(yùn)行不通過(guò)
Animal animal=new Dog(); Cat cat=(Cat)animal // 因?yàn)镃at和Dog無(wú)子父類(lèi)關(guān)系 Animal animal=new Animal(); Dog dog=(Dog)animal; //animal必須指向Dog類(lèi)或Dog類(lèi)子類(lèi)
編譯不通過(guò)
Dog dog=new Cat(); //直接不符合多態(tài)性定義
編譯通過(guò),運(yùn)行通過(guò)
Object object=new Dog(); Animal animal=(Animal)object
子類(lèi)賦值給直接父類(lèi)引用(多態(tài)),然后直接父類(lèi)引用再?gòu)?qiáng)制轉(zhuǎn)換成子類(lèi)子類(lèi)賦值給間接父類(lèi)引用(多態(tài)),然后間接父類(lèi)引用可以強(qiáng)制轉(zhuǎn)換成子類(lèi)或者子類(lèi)的父類(lèi)
以上是“Java中如何使用instanceof關(guān)鍵字”這篇文章的所有內(nèi)容,感謝各位的閱讀!相信大家都有了一定的了解,希望分享的內(nèi)容對(duì)大家有所幫助,如果還想學(xué)習(xí)更多知識(shí),歡迎關(guān)注億速云行業(yè)資訊頻道!
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。