C# 抽象类教程及示例:什么是抽象?

C# 中的抽象类是什么?

抽象类永远不能被实例化,并且用关键字 abstract 标记。抽象类包含零个或多个抽象方法。抽象类充当基类,并被设计为由子类继承,子类实现或重写其方法。

让我们通过下面的示例来学习 C# 中的抽象类。下面是一个名为“Animal”的类的定义。当定义“Animal”类时,关于动物是狗还是猫,没有任何已知信息。名为 description 的方法只是为该类定义的通用方法。

Abstract Class in C#

现在,当知道 Animal 具体将是什么时,我们创建另一个继承基类的类。如果我们知道动物实际上是一只狗,我们创建继承主基类的 Dog 类。这里的主要区别在于 Dog 类不能更改 Animal 类 Description 方法的定义。它必须定义自己的 C# 抽象方法 Dog-Description。这是 C# 抽象类的基本概念。

Abstract Class in C#

在 C# 中创建抽象类

让我们通过实际示例了解 C# 中的抽象类,了解如何更改代码以包含 C# 抽象类。请注意,我们不会运行代码,因为使用 C# 抽象类无法运行任何内容。

步骤 1) 作为第一步,让我们创建一个抽象类。该类将命名为 Tutorial,并且只有一个方法。所有代码都需要写入 Program.cs 文件。

Create an Abstract Class in C#

代码解释:

  1. 我们首先定义抽象类。请注意 abstract 关键字的使用。这用于表示该类是抽象类。
  2. 接下来,我们定义一个不执行任何操作的方法。该方法必须具有 virtual 关键字。这意味着子类不能更改该方法。这是任何抽象类的基本要求。

步骤 2) 现在让我们添加子类。此代码已添加到 Program.cs 文件中。

Create an Abstract Class in C#

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace DemoApplication
{
 abstract class Tutorial
 {
  public virtual void Set() 
  {
      
  }
 }
  class Guru99Tutorial:Tutorial
  {
   protected int TutorialID; 
   protected string TutorialName;
   
   public void SetTutorial(int pID,string pName) 
   {
    TutorialID=pID;
    TutorialName=pName;
   }
   
   public String GetTutorial()
   {
    return TutorialName;
   }
  
  static void Main(string[] args) 
  {
   Guru99Tutorial pTutor=new Guru99Tutorial();
   
   pTutor.SetTutorial(1,".Net");
    
   Console.WriteLine(pTutor.GetTutorial());
    
   Console.ReadKey(); 
  }
 }
}

这段代码没有什么特别之处。我们只是定义了一个名为“Guru99Tutorial”的类,它继承了抽象的 Tutorial 类。然后我们定义了与之前使用的相同的方法。

注意
在这里,我们不能更改 Tutorial 类中定义的 Set 方法的定义。在 Tutorial 类中,我们定义了一个名为 'Set' (public virtual void Set()) 的方法。由于该方法是 C# 抽象类的一部分,因此我们不允许在 Guru99Tutorial 类中再次定义 Set 方法。

摘要

C# 中,抽象类是其他类的蓝图,用 abstract 关键字标记。它不能直接实例化,并且可以包含派生类必须实现的抽象方法。抽象类强制子类之间保持一致的结构,同时允许特定的功能。这个概念通常用于定义基本行为并通过继承确保代码的灵活性。