码迷,mamicode.com
首页 > Windows程序 > 详细

【学习笔记】C# 虚方法(虚函数)

时间:2017-07-22 16:57:50      阅读:432      评论:0      收藏:0      [点我收藏+]

标签:ram   定义   ons   blog   err   类型   引用   函数   实现   

  • 方法替换
    • 子类继承父类后,可以隐藏父类中的方法,在子类中重新实现
  • 虚函数和重写
    • 用virtual修饰的方法叫作虚方法,用override修饰的方法叫做重写
    • 只有方法和属性才能是虚,字段不能虚
  • 抽象方法和虚方法的区别
    • 1. 抽象方法必须在抽象类中,而虚方法可以不。
    • 2. 抽象方法在父类中不能实现,而虚方法可以不。
    • 3. 抽象方法在非抽象子类中必须实现,而虚方法可以不
  • 多态--使用父类类型,调用子类中实现的方法
  •  1 using System;
     2 
     3 namespace VirtualMethodDemo
     4 {
     5     public class Super
     6     {
     7         public virtual string Name
     8         {
     9             get
    10             {
    11                 return "Li";
    12             }
    13         }
    14 
    15         public void A()
    16         {
    17             Console.WriteLine("这个方法是在 Super 中定义的A!");
    18         }
    19         //虚方法
    20 
    21         //抽象方法和虚方法的区别
    22         //1. 抽象方法必须在抽象类中,而虚方法可以不。
    23         //2. 抽象方法在父类中不能实现,而虚方法可以不。
    24         //3. 抽象方法在非抽象子类中必须实现,而虚方法可以不
    25         public virtual void B()
    26         {
    27             Console.WriteLine("这个方法是在 Super 中定义的B!");
    28         }
    29     }
    30 
    31     public class Sub : Super
    32     {
    33 
    34         public override string Name
    35         {
    36             get
    37             {
    38                 return "Zhao";
    39             }
    40         }
    41         //方法替换-在子类中重新实现父类中定义的方法
    42         public new void A()
    43         {
    44             Console.WriteLine("这个方法是在 Sub 中定义的A!");
    45         }
    46 
    47         //虚方法
    48         //这个方法可以不写。
    49         public override void B()
    50         {
    51             Console.WriteLine("这个方法是在 Sub 中定义的B!");
    52         }
    53     }
    54     class Program
    55     {
    56         static void Main(string[] args)
    57         {
    58             //使用父类类型引用父类对象
    59             Super super = new Super();
    60             super.A();      //调用了父类中定义的方法
    61             super.B();      //调用了父类中定义的方法
    62             Console.WriteLine(super.Name);
    63 
    64             //使用子类类型引用子类对象
    65             Sub sub = new Sub();
    66             sub.A();        //调用了子类中定义的方法
    67             sub.B();        //调用了子类中定义的方法
    68             Console.WriteLine(sub.Name);
    69 
    70             //使用父类类型引用子类对象
    71             Super c = new Sub();
    72             c.A();          //调用了父类中定义的方法
    73             c.B();          //调用了子类中定义的方法
    74             Console.WriteLine(c.Name);
    75 
    76             //多态--使用父类类型,调用子类中实现的方法
    77         }
    78     }
    79 }

     

【学习笔记】C# 虚方法(虚函数)

标签:ram   定义   ons   blog   err   类型   引用   函数   实现   

原文地址:http://www.cnblogs.com/stardream19/p/7221426.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!