關於C#中一些關於Inheritance和Polymorphism的事情……

來源:互聯網
上載者:User

標籤:

  在物件導向的語言中,繼承和多態是十分重要的兩個特徵。目前,C#和Java均為單繼承多介面語言,能夠有效利用物件導向的特徵進行編程。其中繼承是一個將類具體化的過程,繼承深度越高,類就越具體。多態則是用不同的具體化方法實現同一種功能的介面,讓父類具有子類的特徵。同時多態可以實現代碼的複用。

  1. virtual方法

    virtual方法定義基類中的虛函數,這種函數可以被子類繼承,並在子類中被override成具有子類特性的新函數。比如:

        public virtual int sum(){}   //……在基類中

                       public override int sum(){}    //……在子類中

          注意,C#中的override關鍵字,在子類中覆蓋函數,此時基類改變此函數,子類並不會發生變化,起到了保護的作用。

    2. new修飾符

        和override比較,new可以顯示地隱藏從基類繼承的成員函數。雖然都是使用子類自己的函數,但是new會隱藏掉、截斷掉基類的函數,而override則會擴充基類函數的功能。下面看一個例子:

 1 using System; 2 using System.Collections.Generic; 3 using System.Linq; 4 using System.Text; 5 using System.Threading.Tasks; 6  7 namespace ConsoleApplication1 8 { 9     class Program10     {11         static void Main(string[] args)12         {13             A objA = new D();14             A objB = new B();15             C objC = new D();16             A objD = new A();17             objA.Movie();18             objB.Movie();19             objC.Movie();20             objD.Movie();21 22         }23             class A {  24                 public virtual void Movie() {25                 Console.WriteLine("MikiMouse");26                           }27                      }28             class B : A {29                 public override void Movie () {30                 Console.WriteLine("DisneyMovie");31                          }32                      }33 34         class C : B {35                 public new virtual void Movie () {36                 Console.WriteLine("Snow White");37                         }38                      }39        class D : C {40                 public override void Movie () {41                 Console.WriteLine("Seven Dwarfs ");42                         }43                      }44         45     }46 }

        其輸出結果是:

 

 

        簡而言之,new virtual相當於一個斷點,截斷了繼承流。

關於C#中一些關於Inheritance和Polymorphism的事情……

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.