多态实例
C#多态实例
1.什么是多态?
多态性是允许你将父对象设置成为一个或更多的他的子对象相等的技术。
赋值后,父对象可以根据当前赋值给他的子对象的特性以不同的方式运作。
用扫地阿姨都能听懂的话说就是: 允许子类类型的指针赋值给父类类型的
指针。
1 using System; 2 using System.Collections.Generic; 3 using System.Linq; 4 using System.Text; 5 using System.Threading.Tasks; 6 7 namespace 多态实例 8 { 9 class Program 10 { 11 static void Main(string[] args) 12 { 13 Console.WriteLine("老板讲话:大家肃静,现在刚好08:00,我们开始开会,请各个部门领导发言:"); 14 Company[] CArray = new Company[3]; 15 CArray[0] = new Manager(); 16 CArray[0].Say("张经理"); 17 CArray[0].Foo(); 18 19 CArray[1] = new Coder(); 20 CArray[1].Say("李程序员"); 21 CArray[1].Foo(); 22 23 CArray[2] = new Accountant(); 24 CArray[2].Say("钱会计"); 25 CArray[2].Foo(); 26 27 Console.ReadKey(); 28 } 29 30 } 31 //定义个公司类 32 class Company 33 { 34 string Name = ""; 35 public virtual void Say(string name) 36 { 37 this.Name = name; 38 } 39 public virtual void Foo() 40 { 41 Console.WriteLine(Name+"根据公司条理,不同的岗位的工作人员,干好岗位的本质工作"); 42 } 43 } 44 //定义经理类 45 class Manager : Company 46 { 47 string Name = ""; 48 public override void Say(string name) 49 { 50 //base.Say(name); 51 this.Name = name; 52 } 53 public override void Foo() 54 { 55 Console.WriteLine(Name+"现在开早会,给大家分配工作"); 56 } 57 58 } 59 60 //定义程序员类 61 class Coder : Company 62 { 63 string Name = ""; 64 public override void Say(string name) 65 { 66 this.Name = name; 67 } 68 public override void Foo() 69 { 70 Console.WriteLine(Name + "根据工作任务安排,我现在开始工作编程"); 71 } 72 } 73 74 //定义财会类 75 class Accountant : Company 76 { 77 string Name = ""; 78 public override void Say(string name) 79 { 80 this.Name = name; 81 } 82 public override void Foo() 83 { 84 Console.WriteLine(Name+"今天是发工资的日子,待会我给大家发工资!"); 85 } 86 87 } 88 89 }
运行结果如图: