[size=large][align=center]自動轉型vs強制轉型[/align][/size]
一、 為什麼要轉型?
物件與物件之間的資料不匹配;因此需要轉型。
二、 什麼時候是自動轉型?什麼時候需要強制轉型?
最直接的答案就是不能自動轉型,那我們就強制轉型。最終的目的就是把乙個物件賦給另乙個物件。
然而我們還是可以分析一下,就可以得出更具體的答案。
舉個生活中的例子:
父親和兒子——我們常常聽人家說,某某家的兒子長得很像他爸爸。
父親 = (自動轉型)兒子;
——是否聽過,某某家的爸爸長得很像他兒子。
兒子 = (不能自動轉型)父親;
那麼,我們可以看出,父親一定是可以包含兒子內的所有屬性,而兒子是不能包含父親內的所有屬性。如果有人硬要說「某某家的爸爸長得很像他兒子。」這樣不符合邏輯的話,就只能強制這麼說了。
兒子 = (強制轉型)父親;
相信通過這個例子你就能明白自動轉型和強制轉型的實質是什麼了。
三、 例項分析
package textrewrite;
/*** 主程式類
* @author sean 2012 - 8
*/public class master
}
通過上例可以看出,因為student1是父類,而student3是子類;父類是不能直接賦值給子類的, 除非強制轉型(collegestudent)student1。而其它賦值語句都可以自動轉型。
另外,當我們使用其它基本型別時都可以通過強制轉型的方法來賦值,但並非所有的強制轉型賦值都是有意義的。
多型之向下轉型(強制轉型)
多型的一種表現,子類引用指向父類物件,稱為向下轉型。向下轉型是強制轉換,因為子類可能有自定義的屬性和方法,所以父類物件向子類型別轉換的時候,需要借助外力,即強制轉換。我們在向上轉型的時候,舉了乙個印表機的例子,因為是同一臺印表機,只是列印的條件不同,呼叫的都是列印方法。但是我們生活中還有別的,條件不...
物件轉型(向上轉型和向下轉型)
物件轉型分為兩種 一種叫向上轉型 父類物件的引用或者叫基類物件的引用指向子類物件,這就是向上轉型 另一種叫向下轉型。轉型的意思是 如把float型別轉成int型別,把double型別轉成float型別,把long型別轉成int型別,這些都叫轉型。把一種形式轉成另外一種形式就叫轉型。除了基礎資料型別的...
向下轉型,向上轉型
package cn.dali.code24 向上轉型 父類引用指向子類物件 格式 父類名稱 物件名 new 子類名稱 向下轉型 當我們使用父類引用指向子類物件的時候,我們想把父類物件轉為子類物件時,需要向下轉型 向下轉型就是乙個還原動作。格式 子類名稱 物件名 子類名稱 父類物件 注意 乙個父類有...