Java繼承--子父類中的構造函數


子父類中的構造函數的特點:  

1.在子類構造對象時,發現,訪問子類構造函數時,父類構造函數也運行了。
   原因是:在子類的構造函數中第一行有一個默認的隱式語句。 super();

   類似於this();   this();調用的是本類的構造函數

2.子類構造函數默認調用的是父類中的空參數構造函數,如果需要調用父類中帶參數的構造函數,可以在子類構造函數中定義。如:super(6);

3.如果父類中沒有定義空參數構造函數,那么子類的構造函數必須用super明確要調用父類中哪個構造函數。

4.同時子類構造函數中如果使用this調用了本類構造函數時,那么super就沒有了,因為super和this都只能定義第一行,所以只能有一個。但是可以保證的是,子類中肯定會有其他的構造函數訪問父類的構造函數。

5.Object是所有類的父類。

注意:supre語句必須要定義在子類構造函數的第一行。因為父類的初始化動作要先完成。

例:

 1 class Fu
 2 {
 3     int num ;
 4     Fu()
 5     {
 6         num =10;
 7         System.out.println("A fu run");
 8     }
 9     Fu(int x)
10     {
11         System.out.println("B fu run..."+x);
12     }
13 }
14 class Zi extends Fu
15 {
16     int num;
17     Zi()
18     {
19         //super();//調用的就是父類中的空參數的構造函數。
20                   //類似於this() 調用的是本類的構造函數 
21         
22         System.out.println("C zi run"+num);
23     }
24     Zi(int x)
25     {
26         this();
27 //        super(x); //如果需要調用父類中帶參數的構造函數,可以在子類構造函數中定義。
28         System.out.println("D zi run "+x);
29     }
30 }
31 
32 class  ExtendsDemo4
33 {
34     public static void main(String[] args) 
35     {
36         new Zi(6);
37     }
38 }
39 class Demo//extends Object  //Object是所有類的父類
40 {
41     /*
42     
43     Demo()
44     {
45         super();
46         return;
47     }
48     */
49 }

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM