Java中instanceof關鍵字實例講解
1.向上轉型 向下轉型
2.強制類型轉換的應用
應用多態性時由於引用為父類類型,導致編譯時隻能調用父類中聲明的屬性和方法。子類特有的屬性和方法不能調用。因此可將父類引用強制轉換為子類引用,則可調用子類特有方法。
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() 報錯,因為Animal類無skill方法 Dog dog=(Dog)animalD; dog.skill(); //輸出 Dog can guard home }
3.instanceof 關鍵字使用
a instanceof A : 判斷對象a是否是類A的實例。如果是,返回true;否則返回false。
public static void main(String [] args) { Animal animalD =new Dog(); if(animalD instanceof Dog) { System.out.println("true");//輸出true } }
4.測試舉例
編譯通過,運行不通過
Animal animal=new Dog(); Cat cat=(Cat)animal // 因為Cat和Dog無子父類關系 Animal animal=new Animal(); Dog dog=(Dog)animal; //animal必須指向Dog類或Dog類子類
編譯不通過
Dog dog=new Cat(); //直接不符合多態性定義
編譯通過,運行通過
Object object=new Dog(); Animal animal=(Animal)object
5.強制類型轉換成功總結
子類賦值給直接父類引用(多態),然後直接父類引用再強制轉換成子類子類賦值給間接父類引用(多態),然後間接父類引用可以強制轉換成子類或者子類的父類
到此這篇關於Java中instanceof關鍵字實例講解的文章就介紹到這瞭,更多相關Java instanceof關鍵字內容請搜索WalkonNet以前的文章或繼續瀏覽下面的相關文章希望大傢以後多多支持WalkonNet!