在Java編程中,類的繼承是基本特性之一。子類繼承父類的屬性和方法,同時(shí)還可以擴(kuò)展和重寫父類的方法。在實(shí)際開發(fā)中,我們經(jīng)常需要在父類和子類之間進(jìn)行類型轉(zhuǎn)換。
在Java中,子類和父類之間的轉(zhuǎn)換可以分為向上轉(zhuǎn)型和向下轉(zhuǎn)型兩種類型。向上轉(zhuǎn)型(Upcasting)是將子類對象賦值給父類引用變量的過程。向下轉(zhuǎn)型(Downcasting)則是將父類對象強(qiáng)制轉(zhuǎn)換為子類對象的過程。
向上轉(zhuǎn)型是比較常見的一種類型轉(zhuǎn)換。具體實(shí)現(xiàn)方法是,創(chuàng)建子類對象后,用父類引用變量來引用該對象。這時(shí),該對象就被認(rèn)為是父類類型,無法直接調(diào)用子類特有的方法。代碼如下所示:
class FatherClass { public void doSomething() { System.out.println("FatherClass"); } } class SonClass extends FatherClass { public void doSomething() { System.out.println("SonClass"); } public void doSonSomething() { System.out.println("doSonSomething"); } } class Test { public static void main(String[] args) { SonClass sonClass = new SonClass(); FatherClass fatherClass = sonClass; //向上轉(zhuǎn)型 fatherClass.doSomething(); //調(diào)用父類方法 } }
上述代碼中,實(shí)例化了一個(gè)SonClass對象sonClass,然后將其向上轉(zhuǎn)型為FatherClass類型的對象fatherClass。通過fatherClass調(diào)用了父類的方法doSomething()。
向下轉(zhuǎn)型則比較少用,需要注意的是它需要使用強(qiáng)制類型轉(zhuǎn)換符(即子類類型)。具體示例如下:
class Test { public static void main(String[] args) { FatherClass fatherClass = new FatherClass(); SonClass sonClass = (SonClass) fatherClass; //向下轉(zhuǎn)型 sonClass.doSomething(); //調(diào)用子類重寫的方法 sonClass.doSonSomething(); //調(diào)用子類特有方法 } }
上述代碼中,首先創(chuàng)建了一個(gè)FatherClass類型的對象fatherClass,然后使用向下轉(zhuǎn)型將其轉(zhuǎn)換為SonClass類型的對象sonClass。需要注意的是,這里需要使用強(qiáng)制類型轉(zhuǎn)換符,否則會導(dǎo)致編譯錯(cuò)誤。通過sonClass調(diào)用了子類的方法doSomething()和特有方法doSonSomething()。