一個關於構造函數的筆試題

class A{
A(int i){

}
}
class B extends A{

}


A、Compile-time error at 5. 
B、Compile-time error at 1. 
C、The compiler attempts to create a default constructor for class B. 

D、The compiler attempts to create a default constructor for class A.

先不說答案。

java中當new一個對象的時候,會調用該類的父類的構造函數,一直可以追溯到Object類。看這道題,如果new一個B的對象的時候,B會首先調用其父類A的無參構造函數,但是由於A類中已經有一個有參的構造函數,將無參構造函數覆蓋了,所以發生編譯錯誤。解決的辦法是在A中寫一個無參的構造函數,或者按照編譯器的提示,將B寫成如下:

class B extends A{

	B(int i) {
		super(i);
		// TODO Auto-generated constructor stub
	}
	
}

答案顯而易見選擇A

還有,有問題要多和周圍人討論,有一個原理:你的問題給同事,80%都會解決,同樣,同事問你的問題80%你也能解決,所以不要怕別人會自己不會丟臉,其實別人也是一樣的。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章