Java繼承時構造函數的關系,先來一道筆試題給大家看看:
在繼承中,關於構造方法的說明,下列說法錯誤的是()
A、子類無條件的繼承父類的無參構造方法,
B、子類可以引用父類中的有參構造方法,使用super關鍵字,
C、如果子類沒有構造方法,則父類無參構造方法作為自已的構造方法,
D、如果子類有無參構造方法,而父類的無參構造方法則被覆蓋。
再看看兩個實際例子:
1
public
class Parent{
2 public static void main(String args[]) {
3
4 }
5 public Parent(){
6 System.out.println("Parent class");
7 }
2 public static void main(String args[]) {
3
4 }
5 public Parent(){
6 System.out.println("Parent class");
7 }
8 }
1
public
class TestExtends
extends Parent {
2 public static void main(String args[]) {
3 TestExtends tes = new TestExtends();
4 tes.testMode();
5 }
6 public TestExtends(){
7 System.out.println("TestExtends class");
8 }
9
10 public void testMode(){
11 System.out.print(100 % 3);
12 System.out.print(",");
13 System.out.println(100 % 3.5);
14 }
2 public static void main(String args[]) {
3 TestExtends tes = new TestExtends();
4 tes.testMode();
5 }
6 public TestExtends(){
7 System.out.println("TestExtends class");
8 }
9
10 public void testMode(){
11 System.out.print(100 % 3);
12 System.out.print(",");
13 System.out.println(100 % 3.5);
14 }
15 }
輸出結果為:
Parent class
TestExtends class
1,2.0
結論很明顯 子類的無參數構造函數不會覆蓋父類的,而且會先調用父類的構造函數再調用自己的。
