首页 > 代码库 > 多态override
多态override
1 using System; 2 using System.Collections.Generic; 3 using System.Linq; 4 using System.Text; 5 6 namespace Sln0405 7 { 8 class Program 9 {10 static void Main(string[] args)11 {12 Chinese c1 = new Chinese();13 c1.SayHello();14 15 Person p1 = c1;16 p1.SayHello();//p1是Person类型的变量17 //先去看Person.SayHello,发现是virtual18 //所以去看p1指向的对象的实际类型Chinese有没有19 //override覆盖SayHello,如果有则调用实际类型的方法20 21 //string s = p1.ToString();//输出类的全名22 //(*)虚方法表(VMT)23 object obj = p1;24 //obj指向的是Chinese类型的对象,25 //调用ToString()这时候发现object的ToString是virtual方法26 //所以看Chinese有没有override ToString方法,如果有则调用27 //Chinese的ToString,如果Chinese没有override ToString方法28 //则看Chinese的父类有没有override ToString方法……29 Console.WriteLine(obj.ToString());30 Console.ReadKey();31 }32 }33 34 class Person35 {36 public virtual void SayHello()37 {38 Console.WriteLine("person");39 }40 41 public override string ToString()42 {43 //return base.ToString();44 return "我是一个人";45 }46 }47 48 49 class Chinese : Person50 {51 public override void SayHello()52 {53 Console.WriteLine("chinese");54 }55 }56 57 class BJ : Chinese58 {59 public override void SayHello()60 {61 base.SayHello();62 }63 }64 65 }
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。