Java多態典型筆試題和總結

Java多態典型筆試題和總結

下面代碼的輸出結果【中國臺灣著名殺毒軟件公司 面試題】

Java多態典型筆試題和總結

答案

classB

classB

classA

有疑問的話也就是第二個輸出,

其實子類強轉為父類其實是為了迷惑大家,強轉操作是沒有必要的。

這時就非常簡單了,Java的多態所以輸出classB

我們再看另外一道題

下面程序的輸出結果是什麼?【中國著名門戶網站公司 校招筆試題】

Java多態典型筆試題和總結

A、 Father Father B、 Father Child C、編譯失敗 D、以上答案都不對

解析:

答案應該是A。

兩個getName方法是靜態方法,在內存中的地址空間是固定的,不會衝突。

兩個方法再內存中佔用不同的空間,具體執行哪一個,則要看由哪個類來調用。

因為是靜態方法且引用都是Father,所以只會調用Father的方法

如果換成下面寫法(去掉static)

答案選擇B.

Java多態典型筆試題和總結

總結

多態子父類的類型轉換

在多態中,

成員函數在多態調用時,編譯看左邊,運行看右邊。

成員變量:無論編譯和運行,都參考左邊(引用型變量所屬的類)。

靜態成員函數:無論編譯和運行,都參考做左邊。

歡迎加入Java學習群:116291581 一起探討交流。

群裡有已經在公司工作的大牛,也有初學Java的新手。

也有很多在校大學生、研究生。

Java多態典型筆試題和總結


分享到:


相關文章: