對象的轉(zhuǎn)型分為向上轉(zhuǎn)型和向下轉(zhuǎn)型
向上轉(zhuǎn)型:將子類的對象賦值給父類的引用,如
Student s = new Student();Person P = s ;
Student是Person的子類(繼承)。首先聲明了student的引用s,再同new關(guān)鍵字調(diào)用了構(gòu)造函數(shù)生成student的對象,并把對象賦值給引用s,s指向?qū)ο蟆T侔裺賦值給Person類型的引用p

class Person{ String name; void introduce(){ System.out.class Student extends Person{ int age; void study(){ System.out.println("我正在學(xué)習(xí)"); } void introduce(){ super.introduce(); System.out.println("我" + age); }}class Test{ public static void main(String args[]){ Student s = new Student(); Person p = s; //等同于 Person p = new Student(); p.name = "lisi"; p.age = 20; p.study(); }}
錯誤原因:根據(jù)上圖所示,雖然s和p指向同一個對象,但一個引用能夠調(diào)用的成員(變量和函數(shù)),取決于這個引用的類型,如p是Person的引用,p能調(diào)用的成員取決于Person中所定義的成員。
在父類中有個方法A,在子類中對方法A進(jìn)行復(fù)寫后(父類方法A被覆蓋),一個引用所調(diào)用的方法,取決于這個引用所指向的對象。p指向Student對象,p調(diào)用introduce(),結(jié)果如下。
p.introduce();

向下轉(zhuǎn)型:將父類的對象賦值給子類的引用,如
Student s1 = new Student();Person P = s1 ;Student s2 = (Student)p;//強制類型轉(zhuǎn)換

向下轉(zhuǎn)型的前提首先進(jìn)行向上轉(zhuǎn)型。父類對象的引用無法直接轉(zhuǎn)型為子類的類型

新聞熱點
疑難解答