選單
×
   ❮   
HTML CSS JAVASCRIPT SQL PYTHON JAVA PHP HOW TO W3.CSS C C++ C# BOOTSTRAP REACT MYSQL JQUERY EXCEL XML DJANGO NUMPY PANDAS NODEJS R TYPESCRIPT ANGULAR GIT POSTGRESQL MONGODB ASP AI GO KOTLIN SASS VUE DSA GEN AI SCIPY AWS CYBERSECURITY DATA SCIENCE
     ❯   

C# 抽象


抽象類和抽象方法

資料抽象是隱藏某些詳細資訊而僅向用戶顯示必要資訊的過程。
抽象可以透過抽象類介面來實現(下一章將詳細介紹)。

abstract 關鍵字用於類和方法

  • 抽象類:是一個受限類,不能用於建立物件(要訪問它,必須從另一個類繼承)。

  • 抽象方法:只能在抽象類中使用,並且它沒有方法體。方法體由派生類(繼承自)提供。

抽象類可以同時擁有抽象方法和常規方法

abstract class Animal 
{
  public abstract void animalSound();
  public void sleep() 
  {
    Console.WriteLine("Zzz");
  }
}

從上面的示例來看,不可能建立 Animal 類的物件

Animal myObj = new Animal(); // Will generate an error (Cannot create an instance of the abstract class or interface 'Animal')

要訪問抽象類,必須從另一個類繼承。讓我們將我們在多型性章節中使用的 Animal 類轉換為抽象類。

還記得在繼承章節中,我們使用 : 符號來繼承類,並使用 override 關鍵字來重寫基類方法。

示例

// Abstract class
abstract class Animal
{
  // Abstract method (does not have a body)
  public abstract void animalSound();
  // Regular method
  public void sleep()
  {
    Console.WriteLine("Zzz");
  }
}

// Derived class (inherit from Animal)
class Pig : Animal
{
  public override void animalSound()
  {
    // The body of animalSound() is provided here
    Console.WriteLine("The pig says: wee wee");
  }
}

class Program
{
  static void Main(string[] args)
  {
    Pig myPig = new Pig(); // Create a Pig object
    myPig.animalSound();  // Call the abstract method
    myPig.sleep();  // Call the regular method
  }
}

自己動手試一試 »

為什麼以及何時使用抽象類和方法?

為了實現安全性 - 隱藏某些詳細資訊,並且只顯示物件的關鍵資訊。

注意:抽象也可以透過介面來實現,下一章將詳細介紹。

×

聯絡銷售

如果您想將 W3Schools 服務用於教育機構、團隊或企業,請傳送電子郵件給我們
sales@w3schools.com

報告錯誤

如果您想報告錯誤,或想提出建議,請傳送電子郵件給我們
help@w3schools.com

W3Schools 經過最佳化,旨在方便學習和培訓。示例可能經過簡化,以提高閱讀和學習體驗。教程、參考資料和示例會不斷審查,以避免錯誤,但我們無法保證所有內容的完全正確性。使用 W3Schools 即表示您已閱讀並接受我們的使用條款Cookie 和隱私政策

版權所有 1999-2024 Refsnes Data。保留所有權利。W3Schools 由 W3.CSS 提供支援