天天看點

學習筆記——instanceof關鍵字

**向下轉型存在安全隐患,為了保證向下轉型安全性,通過instanceof關鍵字進行判斷某個執行個體是否是某個類的對象。**文法定義如下:

對象 instanceof 類

該對象傳回一個boolean類型,如果傳回值為true則表示執行個體是指定對象。

例子:觀察instanceof關鍵字使用1

class Person{
    public  void print(){
    System.out.println("吃飯、睡覺、學習、工作...");
       }
}
class Per extends Person{
	public String fly(){
	return "飛翔、";
		}
	public String wound(){
	return "能打";
		}
}
public class Lx {
	   public static void main(String[] args){
			 Person a=new Person();//不轉型
			 System.out.println(a instanceof Person);//輸出true
			 System.out.println(a instanceof Per);//輸出false
		    }
}
           

如果不采用向上轉型,那麼執行個體化後的這對象就是一個普通人person,即執行個體化對象a為普通人;

a instanceof Person:表示a是person普通人,//輸出true

a instanceof Per;表示a是per超人,//輸出false

例子:觀察instanceof關鍵字使用2

public static void main(String[] args){
 Person a=new Per();//向上轉型
 System.out.println(a instanceof Person);//true
 System.out.println(a instanceof Per);//true
 }
           

日後項目開發過程中,如果要進行向下轉型,先使用instanceof進行判斷。

例子:

class Person{
    public  void print(){
    System.out.println("吃飯、睡覺、學習、工作...");
       }
}
class Per extends Person{
	public String fly(){
	return "飛翔、";
		}
	public String wound(){
	return "能打";
		}
}
public static void main(String[] args){
 Person a=new Per();//向上轉型
 if(a instanceof Per){ //判斷是否已經向上轉型,即a是否為隐藏超人
 Per b=(Per) a;
 System.out.println(b.fly());
 System.out.println(b.wound());
 }
 }
           

輸出結果:

飛翔

能打

向上轉型以後就表示執行個體化對象a是一個隐藏在普通人裡面的超人,除了具有自己作為person的屬性之外,還具有作為per的屬性。

繼續閱讀