[C#, CSharp, C Sharp 教學 教程 教材 Tutorial] 抽象類別(Abstract Class)
YehYeh\'s Notepad yehyeh@gmail.com 

[C#, CSharp] 抽象類別(Abstract Class)

抽象類別

  • 抽象成員:只宣告,而沒有實作的成員,抽象類別的子類別必需實作所有的抽象成員
  • 抽象類別:指明類別不完整(含抽象成員),只能做為基底類別,被其它類別繼承 抽象類別不能密封
  • 只有抽象類別可以包含抽象成員
  • 抽象類別中具實作的成員稱為類別成員
  • 抽象類別中可以含類別成員,也可以含抽象成員
  • 抽象類別不可以被實體化
  • C#中使用abstract關鍵字來宣告抽象類別或抽象成員
    • abstract class 抽象類別
      {
          public string 欄位;
          public string 方法( ) { System.Console.WriteLine("方法"); }
          public abstract void 抽象方法( );
      }
      
      class 類別 : 抽象類別
      {
          public override void 抽象方法( )
          {
              System.Console.WriteLine("抽象方法");
          }
      }
      
      class 類別1
      {
          public void run()
          {
              類別 物件1 = new 類別();          // O 合法
              物件1.抽象方法();
      
              抽象類別 物件2 = new 類別();       // O 合法
              物件2.抽象方法();
      
              抽象類別 物件3 = new 抽象類別();    // X 不合法
          }
      }	
      
  • 繼承抽象類別的類別,需實作抽象類別及其父類別的所有抽象成員,包含繼承來的抽象成員
    • abstract class 抽象類別A
      {
          public abstract string 抽象方法A( );
      }
      
      abstract class 抽象類別B : 抽象類別A
      {
          public abstract string 抽象方法A( );
      }
      
      class 類別 : 抽象類別B
      {
          public override void 抽象方法A( )
          {
              System.Console.WriteLine("抽象方法A");
          }
      
          public override void 抽象方法B( )
          {
              System.Console.WriteLine("抽象方法B");
          }
      }
      
Δ 回到最上方