天天看點

這道Java面試題你真的了解麼?好多大神都回答錯誤!

最簡單面試題:

代碼:

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方法!