C# 继承和多态性及其程序示例

C# 中的继承是什么?

遗产 是 C# 的一个重要概念。继承是一个定义父类和子类的概念。子类继承父类的方法和属性,但同时,它们也可以根据需要修改方法的行为。如果需要,子类还可以定义自己的方法。

让我们通过程序示例更好地理解 C# 继承:

C# 继承示例

现在让我们看看如何在代码中加入继承的概念。

步骤1) 第一步是更改 Tutorial 类的代码。在此步骤中,我们将以下代码添加到 Tutorial.cs 文件中。

C# 继承示例

请注意,我们现在需要向 TutorialID 和 TutorialName 字段添加“protected”访问修饰符。

记得我们在访问修饰符教程中提到过这个访问修饰符。在这里你可以看到它的作用。只有当你有这个访问修饰符(protected)时,子类才能使用父类的字段。

步骤2) 第二步是添加我们的新子类。这个子类的名称将是“Guru99Tutorial”。在此步骤中,我们将以下代码添加到 Tutorial.cs 文件中。该代码应放置在 Tutorial 类定义之后。

C# 继承示例

Code 解释:-

  1. 第一步是创建 Guru99. Tutorial 子类。我们还需要说明,这个类是 Tutorial 类的子类。这是通过冒号 (:) 关键字实现的。
  2. 接下来,我们定义一个名为 RenameTutorial 的方法。它将用于重命名 TutorialName 字段。此方法接受一个包含 Tutorial 新名称的字符串变量。
  3. 然后我们将参数 pNewName 分配给 TutorialName 字段。
    注意:尽管我们没有在“Guru在“99Tutorial”类中,我们仍然可以访问此字段。这是因为“Guru“99Tutorial”是Tutorial类的子类。由于我们将Tutorial类的字段设置为受保护的,因此该子类可以访问这些字段。

步骤3) 最后一步是修改我们的主程序 Program.cs 文件。在我们的控制台应用程序中,我们将创建一个对象。 Guru99Tutorial 类。我们将使用此对象调用 RenameTutorial 方法。然后,我们将借助 GetTutorial 方法显示 TutorialName 字段。

C# 继承示例

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

Code 解释:-

  1. 第一步是为……创建一个对象 Guru99Tutorial 类。这是通过 'new' 关键字完成的。请注意,这次我们并没有创建 Tutorial 类的对象。
  2. 我们使用 RenameTutorial 方法 Guru99Tutorial 类用于更改 TutorialName 字段。我们传递字符串“.Net by”。 Guru99”到 RenameTutorial 方法。
  3. 然后我们调用 GetTutorial 方法。请注意,即使此方法未在……中定义, Guru在 99Tutorial 类中,我们仍然可以访问这个方法。GetTutorial 方法的输出随后会通过 Console.WriteLine 方法显示在控制台上。

如果上述代码输入正确,并且程序成功执行,则会显示以下输出。

输出:

C# 继承示例

从输出结果中我们可以清楚地看到,TutorialName 字段被重命名为“.Net by”。 Guru99”。这是通过子类调用的 RenameTutorial 方法实现的。

C# 中的多态性是什么?

多态性 在 C# 中,这是一个 OOP 概念,一个名称可以有多种形式。例如,您有一部用于通信的智能手机。您选择的通信模式可以是任何方式。它可以是电话、短信、图片信息、邮件等。因此,目标是共同的,即通信,但它们的方法不同。这称为多态性。

通过以下程序示例,您将更好地理解 C# 多态性:

C# 多态性示例

现在让我们看看如何在我们的代码中加入多态的概念。

步骤1) 第一步是更改 Tutorial 类的代码。在此步骤中,我们将以下代码添加到 Tutorial.cs 文件中。

C# 多态性示例

Code 解释:-

1 & 2) 第一步与我们之前的例子相同。我们保持ping SetTutorial 方法的定义如下。

3)该方法根据参数pID和pName设置TutorialID和TutorialName。

4) 在这里,我们对类进行了更改,添加了一个新方法,其名称与 SetTutorial 相同。只是这次我们只传递一个参数,即 pName。在此方法中,我们只是将 TutorialName 字段设置为 pName。

步骤2) 最后一步是修改我们的主程序 Program.cs 文件。在我们的控制台应用程序中,我们将创建一个对象。 Guru99辅导课。

C# 多态性示例

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

Code 解释:-

  1. 在第一步中,我们使用带有 2 个参数的 SetTutorial 方法。我们将 TutorialID 和 TutorialName 传递给此方法。
  2. 在第二步中,我们现在只使用一个参数调用 SetTutorial 方法。我们只是将 TutorialName 传递给此方法。

如果正确输入了上述代码并运行程序,将显示以下输出。如果您还想获取教程 ID 以及教程名称,则应按照以下步骤操作

  1. 创建一个名为 public int GetTutorialID 的单独方法
  2. 在该方法中写入代码行“return TutorialID”。这可用于将 TutorialID 返回给调用程序。

输出:

C# 多态性示例

从输出中,我们可以清楚地看到两个方法都被成功调用。因此,字符串“First Tutorial”和“Second Tutorial”被发送到控制台。

结语

  • 继承是指子类继承父类的字段和方法。然后子类也可以定义自己的方法。
  • 多态性 C# 是一个 OOP 概念,其中一个名称可以有多种形式。

总结一下这篇文章: