java中任意對象強轉為接口類型都不會有編譯錯誤
public class Apple implements Eatable{ public static void main(String args[]) { Drinkable drinkable = (Drinkable)new Apple(); } } interface Eatable{} interface Drinkable{}
java中的類可以多實現接口,Java編譯器無法判斷該類是否實現了該接口所以不會有編譯錯誤。
但是Java中某個類的向上強轉為另外一個類,若該類不是其父類,則會報編譯錯誤,原因在於java中的類是單一繼承的,編譯器可對其進行判斷。
public class Apple extends Eatable{ public static void main(String args[]) { Drinkable drinkable = (Drinkable)new Apple(); 報錯 inconvertible types: can not cast Apple to Drinkable } } class Eatable{} class Drinkable{}