C#多态
一个事物可以同时具有多种较色,但是在某一种特殊的场合只表现出一中。
1,上转型 2,下转型
1、把子类对象赋值给父类对象,称之为上转型。
原理:实际上是把子类对象中的父类对象赋值了父类,此时的赋值语句两边的类型是相同的。
此时,这个父类对象能够调用的方法是:自己的方法和已经重写过的方法,如果方法没有被子类重写,那么调用的
还是自己的方法。2、把已经上转型的父类对象赋值给子类对象。
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
1 sing System; 2 public class studyMutil 3 { 4 public static void Main() 5 { 6 People p = new Student(); 7 p.Sing(); 8 p.Write(); 9 //Console.WriteLine("<br>"); 10 p.Watch(); 11 } 12 } 13 /*----------------------------多态---------------------------------------------------------*/ 14 /* 15 此时,这个父类对象能够调用的方法是: 16 自己的方法和已经重写过的方法, 17 如果方法没有被子类重写,那么调用的还是自己的方法。 18 */ 19 public class People 20 { 21 public void Check() 22 { 23 Console.WriteLine("diyi"); 24 } 25 public void Say() 26 { 27 Console.WriteLine("舒服点!"); 28 } 29 public virtual void Sing() 30 { 31 Console.WriteLine("民族歌"); 32 } 33 public virtual void Write() 34 { 35 Console.Write("用纸写字"); 36 } 37 public virtual void Watch() 38 { 39 Console.WriteLine("我看中国女足!"); 40 41 } 42 } 43 public class Teacher :People 44 { 45 public void Teach() 46 { 47 Console.WriteLine("第一堂课!....."); 48 } 49 public override void Write() 50 { 51 Console.Write("用黑板写字"); 52 } 53 } 54 public class Student : Teacher 55 { 56 public void Study() 57 { 58 Console.WriteLine("我学习的第一堂课!"); 59 } 60 public override void Sing() 61 { 62 Console.WriteLine("轻音乐!"); 63 } 64 public override void Write() 65 { 66 Console.Write("用笔写字!"); 67 } 68 }