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%你也能解決,所以不要怕別人會自己不會丟臉,其實別人也是一樣的。