儘管一直在說OOP,但說實話還不是真正的理解,面向對象的三個基本特性繼承、封裝、多態,前兩個性質曾經設計模式
有接觸聽的比較多還好理解,如下主要介紹一下第三個特性——多態。ide
1. 定義函數
同一操做做用於不一樣的對象,可以有不一樣的解釋,產生不一樣的結果,這就是多態。一種接口多種實現。學習
2. 實現spa
經過派生類覆寫基類中的虛函數型方法來實現的設計
3. 種類code
編譯時多態性:重載實現對象
執行時多態性:覆寫虛成員實現blog
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. }