父類引用指向子類物件,我們稱這個過程為向上轉型,屬於自動型別轉換。
object obj =
newstring
("小小吳");
// 向上可以自動轉型
// obj.charat(0) 無法呼叫。編譯器認為obj是object型別而不是string型別
/* 編寫程式時,如果想呼叫執行時型別的方法,只能進行強制型別轉換。
* 不然通不過編譯器的檢查。
*/string str =
(string) obj;
// 向下轉型
system.out.
println
(str.
charat(0
));// 位於0索引位置的字元
system.out.
println
(obj == str)
;// true.他們倆執行時是同乙個物件
}}
向上轉型後的父類引用變數只能呼叫它編譯型別的方法,不能呼叫它執行時型別的方法。但是即使呼叫編譯型別的方法,我們只能通過編譯,而不能真正的使用 。我們要想使用執行時方法就必須進行型別的強制轉換,我們稱之為向下轉型!
在向下轉型過程中,必須將引用變數轉成真實的執行時型別否則會出現型別轉換異常classcastexception
public
class
testcasting2
}
為了避免出現這種異常,我們可以使用instanceof運算子進行判斷
如下面例子所示
public
class
testcasting3
else
if(obj instanceof
stringbuffer)}
}
物件的轉型
1.向上轉型 什麼是向上轉型?向上轉型 將子類的物件賦值給父類的引用 乙個引用能夠呼叫哪些成員 變數和函式 取決於這個引用的型別是怎麼定義的 乙個引用呼叫的是哪乙個方法,取決於這個引用所指向的物件 向上轉型只要兩個類是繼承關係就一定會成功 2.向下轉型 什麼是向下轉型?向下轉型 將父類的物件賦值給子...
物件的上轉型物件
假設animal類是tiger類的父類,當用子類建立乙個物件,並把這個物件的引用放到父類的物件中時,比如 animal a a new tiger 或 animal a tiger b new tiger a b 這時,稱物件a是物件b的上轉型物件 好比說 老虎是動物 物件的上轉型物件的實體是子類負...
物件導向 物件的轉型
為什麼需要強制轉換型別?引用變數只能呼叫它編譯型別的方法,不能呼叫它執行型別的方法,所以就需要型別的強制轉換。1 乙個父類的引用型別變數可以指向其子類的物件 2 乙個父類的引用不可以訪問其子類物件的新增加的成員 屬性和方法 3 可以使用引用變數instanceof 類名 來判斷引用變數所指向的物件是...