多态-虚方法
实现多态的手段:
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 }
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列01:轻松3步本地部署deepseek,普通电脑可用
· 25岁的心里话
· 按钮权限的设计及实现