OOP中的多態

    儘管一直在說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.	    }
相關文章
相關標籤/搜索