對象的引用可以類型轉換爲對另一種對象的引用,稱爲對象轉換;
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指向了同一個對象