Java中振惰,對象類型轉換分為向上轉型和向下轉型兩種
1. 向上轉型
子類對象到父類對象的類型轉換,通常由系統(tǒng)自動完成焰枢。只需將子類對象賦值給父類對象的引用忆矛,系統(tǒng)就可以自動完成轉換。
Animal animal=new Cat();//Animal類是Cat類的父類
- *子類對象向上轉型為父類對象后裕便,不能再通過父類對象的引用來訪問子類中新增的屬性和方法绒净,但可以訪問子類覆寫父類的屬性和方法。
2. 向下轉型
父類對象到子類對象的類型轉換偿衰,這種轉換通常會出錯挂疆,只有那些通過子類對象創(chuàng)建的父類對象才可以向下轉型為子類對象
Animal animal=new Cat();//向上轉型
Cat cat=(Cat) animal;//父類對象向下轉型為子類對象
由于向下轉型容易出錯,在進行向下轉型時下翎,應盡量使用instanceof判斷要轉換的父類對象是否為子類對象實例
Animal animal=new Cat();
if(animal instanceof Cat){
Cat cat=(Cat) animal;
}
總結
- 向上轉型直接賦值既可缤言,而向下轉型必然伴隨著向上轉型
- 向上轉型提高了代碼可拓展性,減少了重復代碼的工作量
- 向下轉型彌補了向上轉型時丟失的子類的特有屬性和方法视事,Java泛型編程時使用較多