關於instanceof判斷的條件


//instanceof是判斷左側對象是不是右側類的實例

 

package myPackage;    

/**  
* instanceof運算符用法  
* 運算符是雙目運算符,左面的操作元是一個對象,右面是一個類.當  
* 左面的對象是右面的類創建的對象時,該運算符運算的結果是true,否則是false  
*   
* 說明:(1)一個類的實例包括本身的實例,以及所有直接或間接子類的實例  
* (2)instanceof左邊操作元顯式聲明的類型與右邊操作元必須是同種類或右邊是左邊父類的繼承關系,  
* (3)不同的繼承關系下,編譯出錯  
*/    
class  Person {    
}    
class  Student  extends  Person {    
}    
class  Postgraduate  extends  Student {    
}    
class  Animal {    
}    
public  class  Ex_instanceOf {    
public  static  void  main(String[] args) {    
    instanceofTest( new  Student());    
}    
/**  
* 這個程序的輸出結果是:p是類Student的實例  
*   
* Person類所在的繼承樹是:Object<--Person<--Student<--Postgraduate。  
*   
* 這個例子中還加入一個Animal類,它不是在Person類的繼承樹中,所以不能作為instanceof的右操作數。  
*   
* @param p  
*/    
public  static  void  instanceofTest(Person p) {    
    // p 和 Animal類型不一樣,彼此之間沒有繼承關系,編譯會出錯    
    // 提示錯誤:Incompatible conditional operand types Person and Animal    
    // if(p instanceof Animal){    
    // System.out.println("p是類Animal的實例");    
    // }    
    //下面代碼的除了第一行都會輸出    
    if  (p  instanceof  Postgraduate) System.out.println( "p是類Postgraduate的實例" );    
    if  (p  instanceof  Person) System.out.println( "p是類Person的實例" );    
    if  (p  instanceof  Student) System.out.println( "p是類Student的實例" );    
    if  (p  instanceof  Object) System.out.println( "p是類Object的實例" );    
    
}    
}


免責聲明!

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



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