C# 继承和多态性及程序示例
C# 中的继承是什么?
继承是 C# 的一个重要概念。继承是一种概念,您可以在其中定义父类和子类。子类继承父类的方法和属性,但同时,如果需要,它们也可以修改方法的行为。如果需要,子类还可以定义自己的方法。
通过程序示例,让我们更好地理解 C# 继承
C# 继承示例
现在,让我们看看如何在代码中融入继承的概念。
步骤 1) 第一步是更改我们的 Tutorial 类代码。在此步骤中,我们将以下代码添加到 Tutorial.cs 文件中。
请注意,我们需要为 TutorialID 和 TutorialName 字段添加“protected”访问修饰符。
还记得我们在访问修饰符教程中提到的这个访问修饰符吗?在这里您可以看到它的用途。只有当您拥有此访问修饰符(protected)时,子类才能使用父类的字段。
步骤 2) 第二步是添加我们的新子类。这个类的名称将是“Guru99Tutorial”。在此步骤中,我们将以下代码添加到 Tutorial.cs 文件中。代码应放在 Tutorial 类定义之后。
代码解释:
- 第一步是创建 Guru99Tutorial 子类。我们还需要说明这个类将是 Tutorial 类的子类。这是通过“:”关键字完成的。
- 接下来,我们定义一个名为 RenameTutorial 的方法。它将用于重命名 TutorialName 字段。此方法接受一个字符串变量,该变量包含教程的新名称。
- 然后我们将参数 pNewName 分配给 TutorialName 字段。
注意:– 尽管我们没有在“Guru99Tutorial”类中定义 TutorialName 字段,但我们仍然可以访问该字段。这是因为“Guru99Tutorial”是 Tutorial 类的子类。而且由于我们将 Tutorial 类的字段设置为 protected,因此该类可以访问它们。
步骤 3) 最后一步是修改我们的主 Program.cs 文件。在我们的控制台应用程序中,我们将创建一个 Guru99Tutorial 类的对象。使用此对象,我们将调用 RenameTutorial 方法。然后,我们将借助 GetTutorial 方法显示 TutorialName 字段。
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(); } } }
代码解释:
- 第一步是为 Guru99Tutorial 类创建一个对象。这是通过“new”关键字完成的。请注意,这次我们没有创建 Tutorial 类的对象。
- 我们使用 Guru99Tutorial 类的 RenameTutorial 方法来更改 TutorialName 字段。我们将字符串“.Net by Guru99”传递给 RenameTutorial 方法。
- 然后我们调用 GetTutorial 方法。请注意,即使此方法未在 Guru99Tutorial 类中定义,我们仍然可以访问此方法。GetTutorial 方法的输出随后通过 Console.WriteLine 方法显示到控制台。
如果正确输入了上述代码并且程序成功执行,则将显示以下输出。
输出
从输出中,我们可以清楚地看到 TutorialName 字段已重命名为“.Net by Guru99”。这是由子类调用的 RenameTutorial 方法实现的。
C# 中的多态是什么?
C# 中的多态是一个 OOPs 概念,其中一个名称可以有多种形式。例如,您有一个用于通信的智能手机。您可以选择任何通信模式。它可以是电话、短信、图片消息、邮件等。所以,目标是一样的,即通信,但他们的方法不同。这就是多态。
通过下面的程序示例,您将更好地理解 C# 多态
C# 多态示例
现在,让我们看看如何在代码中融入多态的概念。
步骤 1) 第一步是更改我们的 Tutorial 类代码。在此步骤中,我们将以下代码添加到 Tutorial.cs 文件中。
代码解释:
1 和 2) 第一步与我们之前的示例相同。我们保持 SetTutorial 方法的定义不变。
3) 此方法根据参数 pID 和 pName 设置 TutorialID 和 TutorialName。
4) 在这里,我们更改了我们的类,在该类中我们添加了一个与 SetTutorial 同名的新方法。这次我们只传递一个参数,即 pName。在此方法中,我们只是将 TutorialName 字段设置为 pName。
步骤 2) 最后一步是修改我们的主 Program.cs 文件。在我们的控制台应用程序中,我们将创建一个 Guru99Tutorial 类的对象。
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(); } } }
代码解释:
- 在第一步中,我们使用带有 2 个参数的 SetTutorial 方法。我们将 TutorialID 和 TutorialName 都传递给此方法。
- 在第二步中,我们现在调用只有一个参数的 SetTutorial 方法。我们只将 TutorialName 传递给此方法。
如果正确输入上述代码并运行程序,将显示以下输出。如果您也想获取 Tutorial ID 和 Tutorial Name,您应该按照以下步骤操作
- 创建一个名为 public int GetTutorialID 的单独方法
- 在该方法中编写代码行“return TutorialID。”这可以用于将 TutorialID 返回给调用程序。
输出
从输出中,我们可以清楚地看到两个方法都已成功调用。因此,“First Tutorial”和“Second Tutorial”这两个字符串被发送到控制台。
摘要
- 继承是指子类继承父类的字段和方法。子类还可以定义自己的方法。
- C# 中的多态是一种 OOPs 概念,其中一个名称可以有多种形式。