C# 物件導向整理

摘要:C# 物件導向知識整理

這邊整理,我所看到的物件導向知識或文章

1.何謂物件

 

 

 

以下專貼至: yehyeh Notepad 這個網站寫得很好,也很清楚

封裝(Encapsulation)

  • 抽象:對一件事物只瞭解其外在,而不需瞭解其內部構造或實作方法
  • 抽象化(Abstraction):類別的內部成員可以封裝起來,讓別人不知道其如何實作,只能透過它提供的公開類別成員來進行操作
  • 封裝的觀念和抽象化類似,但多了安全的概念,使用者只能使用公開的屬性或方法
    • 不可以直接存取類別私有的屬性或方法
    • 要存取類別私有的屬性或方法,需透過類別公開的方法,而設計師可在這些公開的方法中先做安全性檢查
  • 例如一台電視,只要能看就好,使用者不需知道其構造和原理,只能透過電視的面板或搖控器來進行操作
    如果電視沒有封裝,使用者看電視時會許就得自己把電線找出來接在一起 ⇒ 操作複雜且不安全
    • 範例:
      
      class 電視
      {
          private void 播放() { XXXXXX }
      
          public void 電源()  {  播放(); }
          public void 選台()  {  播放(); }
      }
      
      class 使用者
      {
          電視 tv = new 電視();
          tv.電源();
      }

 

繼承(Inheritance)

  • 類別可以繼承另一個類別的屬性和方法
    • 例如要畫一張和原有的設計圖很像的新設計圖時,可以用本來的設計圖為基礎開始畫繼承 繼承
  • C#中使用 : 來代表繼承,後面接要繼承那個類別
    • 格式:class 子類別 : 父類別 { ... }
  • 子類別可以繼承父類別的能力,直接使用父類別非私有的屬性和方法
  • 子類別只能繼承一個父類別
  • 父類別的方法若宣告為虛擬(virtual),則表示該方法可以被子類別覆寫(非必需)
  • 父類別的方法若宣告為抽象(abstract),則表示該子類別一定要覆寫該方法(子類別為抽象類別除外)
  • 類別若包含抽象成員,則該類別必需宣告為抽象類別
  • 父類別又叫做基底類別(Base Class)
  • 子類別又叫做衍生類別(Derived Class)
    • 範例:
      
      class 父類別
      {
          類別A 屬性1;
          類別B 屬性2;
          public void 方法1( ) {  }
          virtual void 方法2( ) {  }
      }
      
      class 子類別 : 父類別
      {
          類別C 屬性3;
          public override void 方法2( ){  }
          public void 方法3( ){  }
      }
  • 若類別宣告為密封(sealed),則不可以被繼承(即不可為其它類別的父類別)
    • 範例:
      
      class 父類別 {}
      sealed class 子類別 : 父類別 {}     //子類別不可被繼承
  • 若方法或屬性宣告為密封(sealed),則不可以被子類別覆寫

 

多型(Polymorphism)

  • 多型也叫同名異式,即使用一個方法名稱,在不同的條件下可以執行不同的動作
  • 多載(Overloading):多個方法擁有相同名稱,不同參數,傳入不同參數時,會執行對應的方法
    • 範例:
      
      class 類別
      {
          public void 多載方法( ) { }
          public void 多載方法(int a ) { }
          public void 多載方法(int a, int b ) { }
      }
  • 覆寫(Overriding):子類別重新定義父類別的同名同參數方法
    • 範例:
      
      class 父類別
      {
          virtual void 覆寫方法( ) {  }
      }
      
      class 子類別 : 父類別
      {
          public override void 覆寫方法( ){  }
      }
    多形
  •