浅谈 虚方法(virtual)

虚方法     
   
  理解:从字面意思来讲,“虚”,可有可无,子类对父类的某种方法的重写,可以重写,也可以不重写。     
虚方法,顾名思义(装个13),就是某种方法。
  用法:public virtual void TestMethod(){}
     必须为public,因为虚拟成员不能是私有的。
-------------------------------------------------------------------------
  体现:虚方法是多态特性的一种体现。
-------------------------------------------------------------------------
实例运用:多个儿子继承一个父亲,但是他们有共同于父亲的东西,例如血型,他们都是一样的吧。
但是,他们的个性啊,身材啊,都有所差别了。这时候,应该是调用父亲的血缘,拥有共同的血缘。


  

复制代码
 1   class DjwFather
 2     {
 3         public virtual void Method()
 4         {
 5             Console.WriteLine("我是A型号血");
 6         }
 7     }
 8 
 9     class TestSon: DjwFather
10     {
11         public override void Method()
12         {
13             base.Method(); // 这边可以注释,可以不注释;还可以把这个移动到最下面看看运行结果
14             Console.WriteLine("我是儿子");
15         }
16     }
17 
18     class TestDauter : DjwFather
19     {
20         public override void Method()  //这个跟上面一个操作
21         {
22             base.Method();
23             Console.WriteLine("我是女儿");
24         }
25     }
26 
27  class Program
28     {
29         static void Main(string[] args)
30         {
31             TestSon tone = new TestSon(); //实例化
32             tone.Method(); //调儿子
33             TestDauter ttwo = new TestDauter(); //可以把这个注释对比上面。
34             ttwo.Method();
35 
36             Console.ReadKey(); // 可以运行结果定住不动。
37         }
38     }


复制代码
注:Base关键字在这里的作用是,只要写上base.Method() 这个base代表父类,即代表的是调用父类的该方法。base,以及override,可以写也可以不写。(跟抽象类中抽象方法不同)

学习方法:如果你不清楚virtual怎么用,就把上面的代码粘贴复制,反复把注释的代码,不注释,自己查看运行结果,这样更加可以理解virtual怎么用,以及override怎么用。
还有就是把base.Method()移到子类Method内部方法的最下面。
个人认为,这是最好的让你明白的方法,跟你讲再多,不如自己实际敲一遍,运行一下。
推荐初学,先粘贴复制,删掉注释重新运行查看运行结果,尤其注意加base,不加base的结果。

  

posted @   不三周助  阅读(1182)  评论(0编辑  收藏  举报
编辑推荐:
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
阅读排行:
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· 分享 3 个 .NET 开源的文件压缩处理库,助力快速实现文件压缩解压功能!
· Ollama——大语言模型本地部署的极速利器
· DeepSeek如何颠覆传统软件测试?测试工程师会被淘汰吗?

喜欢请打赏

扫描二维码打赏

了解更多

点击右上角即可分享
微信分享提示