标签:
尽管一直在说OOP,但说实话还不是真正的理解,面向对象的三个基本特性继承、封装、多态,前两个性质曾经
有接触听的比較多还好理解,以下主要介绍一下第三个特性——多态。
1. 定义
同一操作作用于不同的对象,能够有不同的解释,产生不同的结果,这就是多态。一种接口多种实现。
2. 实现
通过派生类覆写基类中的虚函数型方法来实现的
3. 种类
编译时多态性:重载实现
执行时多态性:覆写虚成员实现
4. 重载和覆写的差别
重载(两必须一能够):方法名必须同样,參数列表必须不同,返回值类型能够不同
覆写(三同样):方法名,參数列表,返回值类型必须同样
5. 用到了向上转型的功能
6. 多态的重要性
设计模式中用到了大量的多态
7多态和继承的差别
多态是父类使用子类的方法,继承是子类使用父类的方法
8.以下是学习C#实现播放DVD和VCD敲的样例,大家能够结合我写的凝视好好理解一下
7. using System; 8. using System.Collections.Generic; 9. using System.Linq; 10. using System.Text; 11. using System.Threading.Tasks; 12. 13. namespace 多态的样例2 14. { 15. class Program 16. { 17. static void Main(string[] args) 18. { 19. //DVD dvd = new DVD(); //尽管实现了多态但调用方法未实现多态 20. //Console.WriteLine(dvd.PlayVideo()); 21. //VCD vcd = new VCD(); 22. //Console.WriteLine(vcd.PlayVideo()); 23. Program tt = new Program(); //实例化过程 24. tt.PlayVideo(); 25. } 26. public void PlayVideo() 27. { 28. VideoShow vw; //调用了多态 29. vw = new DVD(); 30. Console.WriteLine(vw.PlayVideo()); 31. vw = new VCD(); 32. Console.WriteLine(vw.PlayVideo()); 33. } 34. } 35. public abstract class VideoShow //定义抽象超类,全部派生于抽象类的派生类必须实现其方法 36. { 37. public abstract string PlayVideo(); 38. } 39. public class VCD : VideoShow 40. { 41. public override string PlayVideo() //派生类 42. { 43. return "正在播放VCD"; 44. } 45. } 46. public class DVD : VideoShow 47. { 48. public override string PlayVideo() 49. { 50. return "正在播放DVD"; 51. } 52. }
标签:
原文地址:http://www.cnblogs.com/bhlsheji/p/4216477.html