<1>
建構子的用途為何?(待補充)


<2>
建構子的特色如下:
1. 不能有回傳值, 不能有void宣告
2. method名稱須與class名稱相同
3. 必須是動態
4. 如果class原始碼中沒有任何建構式則編譯器將自動加上預設建構式(不收參數的建構式).
(稍微修改了一下抄來的筆記內容,這樣不會太相似)


<3>
以下是比較細節的部份:
(1)可以宣告protected,屬性可以protected;類別和方法只有public和不寫(protected)
(2)如果父類別宣告為private,那麼從子類別會找不到父類別error
(3)宣告new a = new a();之類的一定是動態,反過來說動態一定要new宣告,因此建構子必須是動態
(4)承3,繼承程式碼會先找父類別,先產生一個物件再產生父類別,再產生子類別,所以最後會在動態區產生三個物件,區域中只會出現區域變數和方法(均為動態)


<4>程式的寫法
<5>經典例題1
Q:以下這個考題是建構子的經典題目,通常這個題目會出現一個父類別(S1)和一個子類別(Sub),以下的這個程式執行會錯誤,要如何修改?
Ans:答案很簡單,父類別只收一個參數,子類別如果不乎叫父類別預設會自行宣告S1();,因此在父類別要加上public S1(){}或是子類別的參數要改為S1(text);之類的就可以執行了。
請注意14行的宣告方式,因為建構子是動態因此14行不能省略,如果14行空白也要能寫得出來才算完全了解。


1. class S1 { 

2.    public int i = 0; 
3.
4.    public S1(String text){
5.         i = 1;
6.    }
7. } 
8. 
9. public class Sub extends S1 {
10.     public Sub (String text){
11.         i = 2;
12.     }
13.     public static void main (String args[]){
14.            Sub sub = new Sub ("Hello");
15.            System.out.println(sub.i); 
16.        }
17. }

這個題型如果第四行或第九行的public改為protected也是可以執行,注意建構子使用類別相同的名稱,因此第4行不會出現void和return、第10行也不會出現void和return,這是建構子的另一大特徵,就是不會出現void和return,會改用this或是呼叫父類別的建構子super(...);


arrow
arrow
    全站熱搜

    貓羽 發表在 痞客邦 留言(0) 人氣()