C#继承和多态 项目实例(C# Inheritance and Polymorphism with Program Examples)

什么是继承?

继承是C#中很重要的概念。继承是一个定义父类和子类的概念。子类继承父类的方法和属性,但是同时,根据需要他们也会修改方法函数的行为。子类也可以定义自己的方法函数。

现在,让我们看一下如何将继承的概念运用在代码中。

第一步:更改Tutorial类的代码,如下

注意:我们现在在TutorialID和TutorialName字段中增加了访问修饰符“protected”

记住我们在tutorial类中提到的访问修饰符,你会看到这么做的目的。只有设置了访问修饰符protected,子类才能够使用父类的字段。

第二步:第二步是添加新的子类。这个类的名称是“Guru99Tutorial”,在这一步中,我们添加了如下代码到Tutorial.cs文件中。

代码解释:

1、第一步是创建Guru99Tutorial子类,这个类是Tutorial的子类,子类 和基类之间用:标注。

2、接下来,我们定义了一个叫RenameTutorial的函数。此函数用于重命名TutorialName字段。此函数接受string变量,string变量包含Tutorial类的新名字。

3、将参数pNewName赋值给TutorialName字段。

注:尽管我们在Guru99Tutorial类中没有定义TutorialName字段,但是在子类中仍然可以访问这个字段。这是因为Guru99Tutorial是Tutorial的子类,也是因为我们将Tutorial类的字段设置为protected,这样字段就可以被子类访问。

第三步:最后一步是修改main program主程序。我们定义一个Guru99Tutorial类的实例对象,用这个实例对象,可以调用RenameTutorial方法函数。然后在GetTutorial函数的帮助下,可以显示TutorialName字段。

复制代码
 1 using System;
 2 using System.Collections.Generic;
 3 using System.Linq;
 4 using System.Text;
 5 using System.Threading.Tasks;
 6 namespace DemoApplication
 7 {
 8  public class Tutorial
 9  {
10   protected int TutorialID; 
11   protected string TutorialName;
12   
13   public void SetTutorial(int pID,string pName) 
14   {
15    TutorialID=pID;
16    TutorialName=pName;
17   }
18   
19   public String GetTutorial()
20   {
21    return TutorialName;
22   }
23  }
24   public class Guru99Tutorial:Tutorial
25   {
26    public void RenameTutorial(String pNewName)
27    {
28     TutorialName=pNewName;
29    }
30   
31   static void Main(string[] args) 
32   {
33    Guru99Tutorial pTutor=new Guru99Tutorial();
34    
35    pTutor.RenameTutorial(".Net by Guru99");
36     
37    Console.WriteLine(pTutor.GetTutorial());
38     
39    Console.ReadKey(); 
40   }
41  }
42 }
复制代码

输出结果

什么是多态?

C#中的多态性是一个OOPs概念,一个名称可以有多种形式。

比如,你有一个智能手机用于沟通。你可以选择任何沟通形式,可能是打电话,发短信,发图片,邮件等等。所以说,目的是沟通,但是方式是不相同的,这就叫做多态。

通过下面这个项目例子,就会更好地理解多态的概念

现在我们看一下,在下面的代码中如何整合多态的概念。

第一步:

修改Tutorial类的代码,在这一步中,添加代码如下

 代码解读:

1)第一步和前面的项目实例是一样的,依旧定义了SetTutorial函数;

3)函数基于pID 和 pName参数设置了TutorialID 和 the TutorialName;

4)这次我们对类做了修改,添加了一个名称相同的新函数SetTutorial()。这一次我们设置了一个参数pName。在这个函数中,我们将pName赋值给了TutorialName字段。

第二步:

最后一步还是修改主程序,产生一个Guru99Tutorial类的实例对象。

复制代码
 1 using System;
 2 using System.Collections.Generic;
 3 using System.Linq;
 4 using System.Text;
 5 using System.Threading.Tasks;
 6 namespace DemoApplication
 7 {
 8  class Tutorial
 9  {
10   public int TutorialID; 
11   public string TutorialName;
12   
13   public void SetTutorial(int pID,string pName) 
14   {
15    TutorialID=pID;
16    TutorialName=pName;
17   }
18   public void SetTutorial(string pName) 
19   {
20    TutorialName=pName;
21   }
22   public String GetTutorial()
23   {
24    return TutorialName;
25   }
26   
27   static void Main(string[] args) 
28   {
29    Tutorial pTutor=new Tutorial();
30    
31    pTutor.SetTutorial(1,"First Tutorial");
32    Console.WriteLine(pTutor.GetTutorial());
33    
34    pTutor.SetTutorial("Second Tutorial");
35    Console.WriteLine(pTutor.GetTutorial());
36     
37    Console.ReadKey(); 
38   }
39  }
40 }
复制代码

从运行结果可以看到,First Tutorial 和 Second Tutorial都显示出来了。

posted @   chenlight  阅读(234)  评论(1编辑  收藏  举报
相关博文:
阅读排行:
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 【译】Visual Studio 中新的强大生产力特性
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构
点击右上角即可分享
微信分享提示