作業(yè)代碼區(qū)別問題
這兩段代碼的區(qū)別在哪里,運行結果一樣
human log1=new Chinese();
??log1.say();
??human log2=new American();
??log2.say();
-------------------------------
Chinese p=new Chinese();
p.say();
American p2=new American();
p2.say();
這兩段代碼的區(qū)別在哪里,運行結果一樣
human log1=new Chinese();
??log1.say();
??human log2=new American();
??log2.say();
-------------------------------
Chinese p=new Chinese();
p.say();
American p2=new American();
p2.say();
2018-03-31
舉報
2019-07-21
Chinese p=new Chinese()是本類引用指向本類對象;
human log1=new Chinese()是父類的引用指向子類對象,當然父類的引用也可以指向本類對象;這就是引用的多態(tài)。
2018-03-31
human 是一個抽象類,抽象類是不能實例化的,只能被繼承重載。 他做了工作把子類賦值給抽象類的時候 類型轉(zhuǎn)換了下 ,其實log1 和 log2 都是子類, 所以結果一樣。 但是如果你 寫??human log1=new human?(); 會報錯