關於java中任意對象強制轉換為接口類型的問題


  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{}

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM