首页 > 编程语言 > 详细

Unity C# 多态

时间:2017-03-30 18:50:40      阅读:174      评论:0      收藏:0      [点我收藏+]

1、多态

里氏替换原则:

任何能用基类的地方,可以用子类代替,反过来不行。子类能够在基类的基础上增加新的行为。面向对象设计的基本原则之一。

开放封闭原则:

对扩展开放,意味着有新的需求或变化时,可以对现有代码进行扩展,以适应新的情况。对修改封闭,意味着类一旦设计完成,就可以独立完成其工作,而不要对类进行任何修改。关键是抽象,将一个功能的通用部分和实现细节部分清晰的分离开来。所有面向对象原则的核心。

虚方法实现多态:

 1 using System;
 2 
 3 namespace Polymorphism
 4 {
 5     // 鸟类:父类
 6     public class Bird
 7     {
 8         // 吃:虚方法
 9         public virtual void Eat()
10         {
11             Console.WriteLine("我是一只小小鸟,我喜欢吃虫子~");
12         }
13     }
14         
15     // 喜鹊:子类
16     public  class Magpie:Bird
17     {
18         // 重写父类中Eat方法
19         public override void Eat()
20         {
21             Console.WriteLine("我是一只喜鹊,我喜欢吃虫子~");
22         }
23     }
24         
25     // 老鹰:子类
26     public  class Eagle:Bird
27     {
28         // 重写父类中Eat方法
29         public override void Eat()
30         {
31             Console.WriteLine("我是一只老鹰,我喜欢吃肉~");
32         }
33     }
34         
35     // 企鹅:子类
36     public  class Penguin:Bird
37     {
38         // 重写父类中Eat方法
39         public override void Eat()
40         {
41             Console.WriteLine("我是一只小企鹅,我喜欢吃鱼~");
42         }
43     }
44 
45     class MainClass
46     {
47         public static void Main (string[] args)
48         {
49             //创建一个Bird基类数组,添加基类Bird对象,Magpie对象,Eagle对象,Penguin对象
50             Bird[] birds = { 
51                 new Bird(),
52                 new Magpie(),
53                 new Eagle(),
54                 new Penguin()
55             };
56             //遍历一下birds数组
57             foreach (Bird bird in birds)
58             {
59                 bird.Eat();
60             }
61             Console.ReadKey();
62         }
63     }
64 }

运行结果:

技术分享

 

抽象实现多态:

 1 using System;
 2 
 3 namespace Polymorphism
 4 {
 5     // 鸟类:父类
 6     public abstract class Bird
 7     {
 8         // 吃:虚方法
 9         public abstract void Eat();
10     }
11         
12     // 喜鹊:子类
13     public  class Magpie:Bird
14     {
15         // 重写父类中Eat方法
16         public override void Eat()
17         {
18             Console.WriteLine("我是一只喜鹊,我喜欢吃虫子~");
19         }
20     }
21         
22     // 老鹰:子类
23     public  class Eagle:Bird
24     {
25         // 重写父类中Eat方法
26         public override void Eat()
27         {
28             Console.WriteLine("我是一只老鹰,我喜欢吃肉~");
29         }
30     }
31         
32     // 企鹅:子类
33     public  class Penguin:Bird
34     {
35         // 重写父类中Eat方法
36         public override void Eat()
37         {
38             Console.WriteLine("我是一只小企鹅,我喜欢吃鱼~");
39         }
40     }
41 
42     class MainClass
43     {
44         public static void Main (string[] args)
45         {
46             //创建一个Bird基类数组,添加基类Bird对象,Magpie对象,Eagle对象,Penguin对象
47             Bird[] birds = { 
48                 new Magpie(),
49                 new Eagle(),
50                 new Penguin()
51             };
52             //遍历一下birds数组
53             foreach (Bird bird in birds)
54             {
55                 bird.Eat();
56             }
57             Console.ReadKey();
58         }
59     }
60 }

运行结果:

技术分享

 

接口实现多态:

 1 using System;
 2 
 3 namespace Polymorphism
 4 {
 5     //
 6     public interface IFlyable
 7     {
 8         void Fly();
 9     }
10 
11     // 鸟类:父类
12     public abstract class Bird
13     {
14         // 吃:虚方法
15         public abstract void Eat();
16     }
17 
18     // 喜鹊:子类
19     public  class Magpie:Bird,IFlyable
20     {
21         public void Fly ()
22         {
23             Console.WriteLine ("我是一只喜鹊,我会飞~");
24         }
25 
26         // 重写父类中Eat方法
27         public override void Eat()
28         {
29             Console.WriteLine("我是一只喜鹊,我喜欢吃虫子~");
30         }
31     }
32 
33     // 老鹰:子类
34     public  class Eagle:Bird,IFlyable
35     {
36         public void Fly ()
37         {
38             Console.WriteLine ("我是一只老鹰,我可以飞~");
39         }
40 
41         // 重写父类中Eat方法
42         public override void Eat()
43         {
44             Console.WriteLine("我是一只老鹰,我喜欢吃肉~");
45         }
46     }
47 
48     // 企鹅:子类
49     public  class Penguin:Bird
50     {
51         // 重写父类中Eat方法
52         public override void Eat()
53         {
54             Console.WriteLine("我是一只小企鹅,我喜欢吃鱼~");
55         }
56     }
57 
58     class MainClass
59     {
60         public static void Main (string[] args)
61         {
62             //创建一个Bird基类数组,添加基类Bird对象,Magpie对象,Eagle对象,Penguin对象
63             Bird[] birds = { 
64                 new Magpie(),
65                 new Eagle(),
66                 new Penguin()
67             };
68             //遍历一下birds数组
69             foreach (Bird bird in birds)
70             {
71                 bird.Eat();
72             }
73 
74             Console.WriteLine ("-----------------------");
75 
76             //创建一个IFlyable接口数组,添加 Magpie对象,Eagle对象
77             IFlyable[] flys = { 
78                 new Magpie(),
79                 new Eagle()
80             };
81             //遍历一下flys数组
82             foreach (IFlyable fly in flys)
83             {
84                 fly.Fly();
85             }
86             Console.ReadKey();
87         }
88     }
89 }

运行结果:

技术分享

 

Unity C# 多态

原文:http://www.cnblogs.com/Jason-c/p/6647541.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!