闲说多态

1、多态分为覆写和重载,重载即方法名相同,方法参数个数或类型或顺序不同。

2、多态的表现形式之一:将父类类型作为方法的参数。

Eg:家用电器

 1 class Person

 2 

 3 {

 4 

 5 public void RunElectrical(Electrical d)

 6 

 7 {

 8 

 9  Console.WriteLine("给电器插电");

10 

11  d.Run();

12 

13 }

14 

15 }

16 

17 //电器类 

18 class Electrical
19 20 { 21 22 public virtual void Run() 23 24 { 25 26 Console.WriteLine("电器运行"); 27 28 } 29 30 } 31 32 //空调类 33 class AirConditioning:Electrical 34 35 { 36 37 public override void Run() 38 39 { 40 41 Console.WriteLine("空调运行"); 42 43 } 44 45 } 46 47 //冰箱类
48 class IceBox:Electrical 49 50 { 51 52 public override void Run() 53 54 { 55 56 Console.WriteLine("冰箱运行"); 57 58 } 59 60 } 61 62 63 class Program 64 65 { 66 67 static void Main(string[] agrs) 68 69 { 70 71 IceBox iceBox=new IceBox(); 72 73 Person p=new Person(); 74 75 p.RunElectrical(iceBox); 76 77 Console.ReadKey(); 78 79 } 80 81 }

结果:

闲说多态

3、将父类类型作为返回值

Eg:交通工具

  1 //宠物类

  2 

  3 class Pet

  4 

  5 {

  6 

  7   public virtual void Shout()

  8 

  9   {

 10 

 11       Console.WriteLine("宠物叫");

 12 

 13   }

 14 

 15 }

 16 

 17 //猫类

 18 

 19 class Cat:Pet

 20 

 21 {

 22 

 23    public override void Shout()

 24 

 25    {

 26 

 27        Console.WriteLine("我是一只猫咪,喵喵");

 28 

 29    }

 30 

 31 }

 32 

 33 //狗类

 34 

 35 class Dog:Pet

 36 

 37 {

 38 

 39    public override void Shout()

 40 

 41    {

 42 

 43       Console.WriteLine("我是旺财,旺旺");

 44 

 45    }

 46 

 47 }

 48 

 49 //商店类

 50 

 51 class Shop

 52 

 53 {

 54 

 55  public Pet SellPet(string type)

 56 

 57 {

 58 

 59   switch(type)

 60 

 61   {

 62 

 63       case "dog":

 64 

 65        return new Dog();

 66 

 67       case "cat":

 68 

 69         return Cat();

 70 

 71       defalut:

 72 

 73          return null;

 74 

 75   }

 76 

 77 }

 78 

 79 }

 80 

 81 

 82 class Program

 83 

 84 {

 85 

 86   static void Main(string[] agrs)

 87 

 88   {

 89 

 90     shop shop=new Shop();

 91 

 92     Pet pet=Shop.SellPet("cat");

 93 

 94     pet.Shout();

 95 

 96     Console.ReadKey();

 97 

 98   }

 99 

100 }

 

你可能感兴趣的:(多态)