多态-虚方法

实现多态的手段:

1)、虚方法 

2)、抽象类

3)接口

虚方法:将父类的方法标记为虚方法 ,使用关键字 virtual,将子类方法加override重写父类

复制代码
  1 using System;
  2 
  3 namespace Practice_多态_虚方法
  4 {
  5     class Program
  6     {
  7         static void Main(string[] args)
  8         {
  9             Chinese c1 = new Chinese("王五");
 10             Chinese c2 = new Chinese("赵四");
 11             Japan j1 = new Japan("松下");
 12             Japan j2 = new Japan("主内");
 13             Person[] per = { c1, c2, j1, j2 };
 14             for (int i = 0; i < per.Length; i++)
 15             {
 16                 /*if(per[i] is Chinese)
 17                 {
 18                     ((Chinese)per[i]).SayHello();
 19                 }
 20                 else if (per[i] is Japan)
 21                 {
 22                     ((Japan)per[i]).SayHello();
 23                 }*/
 24                 per[i].SayHello();
 25 
 26             }
 27            
 28             Console.ReadKey();
 29            
 30 
 31 
 32         }
 33     }
 34 }
 35 
 36 
 37 
 38 
 39 using System;
 40 using System.Collections.Generic;
 41 using System.Linq;
 42 using System.Text;
 43 using System.Threading.Tasks;
 44 
 45 namespace Practice_多态_虚方法
 46 {
 47     public class Person
 48     {
 49         private string name;
 50         public string Name
 51         {
 52             get{ return name; }
 53             set { name = value; }
 54         }
 55         
 56         public Person(string name)
 57         {
 58             this.Name = name;
 59         }
 60         public virtual void SayHello()
 61         {
 62             Console.WriteLine("我是人类");
 63         }
 64     }
 65 }
 66 
 67 
 68 
 69 
 70 using System;
 71 using System.Collections.Generic;
 72 using System.Linq;
 73 using System.Text;
 74 using System.Threading.Tasks;
 75 
 76 namespace Practice_多态_虚方法
 77 {
 78     public class Chinese:Person
 79     {
 80         public Chinese(string name) 
 81             : base(name)
 82         {
 83 
 84         }
 85 
 86         public override void SayHello()
 87         {
 88             Console.WriteLine("我叫{0}", this.Name);
 89         }
 90     }
 91 }
 92 
 93 
 94 
 95 
 96 using System;
 97 using System.Collections.Generic;
 98 using System.Linq;
 99 using System.Text;
100 using System.Threading.Tasks;
101 
102 namespace Practice_多态_虚方法
103 {
104     public class Japan:Person
105     {
106         public Japan(string name)
107             : base(name)
108         {
109 
110         }
111 
112         public override void SayHello()
113         {
114             Console.WriteLine("我叫{0}", this.Name);
115         }
116     }
117 }
复制代码

 

posted @   King_X  阅读(33)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列01:轻松3步本地部署deepseek,普通电脑可用
· 25岁的心里话
· 按钮权限的设计及实现
点击右上角即可分享
微信分享提示