Day58 Java面向對象13 instanceof 和 類型轉換
1.instanceof關鍵字
instanceof關鍵字的作用是判斷一個對象是否是某個類或其子類的實例,它返回一個布爾值true/false
dog1 instanceof Dog; //返回true
dog1 instanceof Animals; //返回true
dog1 instanceof Object; //返回true
dog1 instanceof Cat; //返回false
2.對象類型轉換
①子轉父(向上轉型)
- 把子類轉換父類
- 自動轉換,不需要顯示定義
- 只能調用父類中的方法(如果子類進行了重寫,執行子類版本),無法調用子類獨有方法
Dog dog = new Dog();
Animal a = dog; // 向上轉型,自動發生
a.makeSound(); // 調用Dog重寫的makeSound()
②父轉子(向下轉型)
- 把父類轉換為子類
- 強制轉換,需要顯示定義
- 必須保證父類引用實際指向的是該子類對象,否則會拋出異常 ClassCastException
Animal a = new Dog(); // 向上轉型
if (a instanceof Dog) {Dog d = (Dog) a; // 向下轉型,安全d.bark(); // 可以調用Dog獨有的方法
}