對象轉換

對象的引用可以類型轉換爲對另一種對象的引用,稱爲對象轉換;

eg:若A類是Object的子類

Object  o1 = new A();//向上轉換,將子類的實例裝爲父類的變量

A o2 = (A)o1;//向下轉換,將父類的實例轉換爲子類的變量

Object o3 = new Object();

A o4 = (A)o3;是錯誤的,運行時將出現異常

在執行類型裝換前,應先確定該對象是另一個對象的實例,既該類是另一個類的子類,而一般都使用運算符instabceof來實現。eg;

public class INSTANCEOF {
    public static void main(String[] args){
        M s = new N();
        q(s);
    }
    
    public static void q(M s){
        if(s instanceof M){//判斷對象s是不是類M的實例
            System.out.println(((N)s).p());
        }
    }
}

class M{
    public String p(){
        return "M";
    }
}

class N extends M{
    @Override
    public String p(){
        return "N";
    }
}

結果爲:

N


對象轉換和基本類型值的轉換是不同的,基本類型值的轉換是返回一個新的值,而對象轉換是不會創建一個新的對象的;

double a = 456.5;

int b = (int)a;//創建了一個int類型的值


Object o = new A();

A c = (A)o;

o,c指向了同一個對象

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章