最簡單面試題:
代碼:
package cn.itcast.sort;
public class Demo1 {
public static void main(String[] args) {
new Zi();
}
}
class Fu{//父類
Fu(){
show();
}
void show(){
System.out.println("Fu");
}
}
class Zi extends Fu//子類繼承父類
{
void show(){
System.out.println("Zi");
}
}
我使用這道題測試了很多人,但是大多數的答案是Fu,但是實際運作結果是Zi.
關于答案:
1.其實這道面試題很簡單,主要考察了Java的一個關鍵字this,main方法中new的對象是Zi,是以this指代的就是Zi類的對象.
2.我們知道當調用子類的時候先走的是父類的構造方法,是以先走的是父類的構造方法,調用show方法,但是這裡隐含了一個關鍵字,其實在Fu類的構造方法中調用show()的時候省略了關鍵字this,實際上是this.show();通過上述的介紹我們已經知道this代表的是子類的對象,是以這裡調用子類的show方法,而不是父類的show方法!