2012年5月6日 星期日

[Java] 物件導向 建構方法 this 繼承

[草稿]

物件導向

可以比喻為 
規格書 (Class,類別)來定義  一個物件(object擁有的  屬性(內部運算的資料成員 Field)與 方法(外界互動的動態 Method)



舉例: 
        定義一個物件: 「球」
      屬性(Field):    名稱: private String name; 
             半徑: private double radius;              
        方法(Method): 取得半徑getRadius();
                                   取得名字getName();
        存取權限 :           公用public    (可以被程式呼叫,重覆被呼叫使用,並可傳入引數或傳回一個數值)
             私有private   (Only the same Class can be used)
             protected                    ( )

建構方法   REF

1.
無引數的建構方法中直接使用this() 來呼叫另一個有參數的建構方法









[this]

  • 每一個類別class的方法method成員都會隱含一個this參考,用來指向呼叫它的物件object
           舉例:
                                 public Ball(double r, String n) { 
                 radius = r;  // 實際等於this.radius = r;
                 name = n;    // 實際等於this.name = n;


  • 當物件需要得知自己的記憶體位址時, this參考的使用時機

             舉例:
       public class GUIExample extends JFrame                       implements MouseListener { 

    // .... 

    // 實作事件處理的物件為自已

        addMouseListener(this);    

    // .... 

    // ==  滑鼠事件實作 == 
    public void mouseEntered(MouseEvent e) { 
        // ..... 
    } 
    // .... 
 

  • 主要是用於類別中呼叫建構方法,而避免直接以建構方法的名稱來呼叫
              舉例:

                         public class Ball { 

                private String name; 

   

         public Ball() { 

                this("No name"); 
                   ....     }
         public Ball(String name) { 
               this.name = name; 
                    ....     } } 

                 如此,不用在建構方法中撰寫重覆的程式碼

繼承(extend)

繼承extend某個類別class時,該類別的所有public成員都可以在衍生child類別中被呼叫使用,而private成員則不可以直接在衍生類別中被呼叫使用
這可以使用super()方法來達到,它表示呼叫基底類別的建構方法!








沒有留言:

張貼留言