C#多态

一个事物可以同时具有多种较色,但是在某一种特殊的场合只表现出一中。
       1,上转型    2,下转型
         1、把子类对象赋值给父类对象,称之为上转型。
  原理:实际上是把子类对象中的父类对象赋值了父类,此时的赋值语句两边的类型是相同的。
  此时,这个父类对象能够调用的方法是:自己的方法和已经重写过的方法,如果方法没有被子类重写,那么调用的
  还是自己的方法。2、把已经上转型的父类对象赋值给子类对象。

View Code
 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  }

 

posted @ 2012-08-04 14:27  妍珊  阅读(350)  评论(1编辑  收藏  举报