• 浅谈 虚方法(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的结果。

      

  • 相关阅读:
    45 个非常有用的 Oracle 查询语句
    [转载]java图片缩放处理
    [转载]java图片缩放处理
    十步完全理解SQL
    十步完全理解SQL
    day04_20170521_函数(二)
    to disable the entity lazy load, The ObjectContext instance has been disposed and can no longer be used for operations that require a connection.
    wordpress mobile templates
    linq query, using int.parse to convert varchar to int while orderby
    appfabric 简单应用
  • 原文地址:https://www.cnblogs.com/u3ddjw/p/6676485.html
Copyright © 2020-2023  润新知