乡下人产国偷v产偷v自拍,国产午夜片在线观看,婷婷成人亚洲综合国产麻豆,久久综合给合久久狠狠狠9

  • <output id="e9wm2"></output>
    <s id="e9wm2"><nobr id="e9wm2"><ins id="e9wm2"></ins></nobr></s>

    • 分享

      面向?qū)ο蟮年P鍵技術(多態(tài)、接口、抽象)

       細想生活 2015-01-19

      對于一些C#的初學者,類似于面向?qū)ο笾械亩鄳B(tài)、接口、抽象、不是能很好的理解,本帖只針對一些初學者對這幾個概念不是很理解的人看,

      牛人請繞道額就不要浪費時間了哈!我一個一個來就舉一些簡單易懂的例子!

      多態(tài)

      直接上例子:

      復制代碼
      using System;//包含基本類和基類

      using System.Collections.Generic;//定義泛型集合的接口和類

      using System.Linq;//支持語言集成查詢

      using System.Text;//包含用于字符編碼等功能的對象



      namespace Test

      {

      class Program

      {

      static voidMain(string[] args)

      {

      MyHobby[]hobbies=new MyHobby[4];

      hobbies[0] = new MyHobby();

      hobbies[1] = new Writing();

      hobbies[2] = new Programing();

      hobbies[3] = new Music();

      foreach(MyHobby obj in hobbies)

      {

      obj.Interest();

      }

      Console.ReadKey();

      }

      }

      /// <summary>

      /// 基類 MyHobby

      /// </summary>

      class MyHobby

      {

      public virtual void Interest()

      {

      Console.WriteLine("我的愛好是:");

      }

      }

      /// <summary>

      /// Writing 繼承 MyHobby

      /// </summary>

      class Writing : MyHobby

      {

      public override void Interest()//重載方法Interest()

      {

      Console.WriteLine("寫作");

      }

      }

      /// <summary>

      /// Programing 繼承 MyHobby

      /// </summary>

      class Programing : MyHobby

      {

      public override void Interest()//重載方法Interest()

      {

      Console.WriteLine("編程");

      }

      }

      /// <summary>

      /// Music 繼承 MyHobby

      /// </summary>

      class Music : MyHobby

      {

      public override void Interest()//重載方法Interest()

      {

      Console.WriteLine("音樂");

      }

      }



      }

      復制代碼

      運行結(jié)果:

       

      總結(jié):思想是,從基類中派生出三個類,在這三個類中重載基類的方法,然后重新調(diào)用派生類中的方法。因為每一次重載的功能都不一樣,所以就實現(xiàn)了多態(tài)!

       

      接口

      還是用一個例子來說明:

      復制代碼
      using System;//包含基本類和基類

      using System.Collections.Generic;//定義泛型集合的接口和類

      using System.Linq;//支持語言集成查詢

      using System.Text;//包含用于字符編碼等功能的對象



      namespace Test

      {

      class Program

      {

      static voidMain(string[] args)

      {

      UseInterface u = new UseInterface();//創(chuàng)建對象,調(diào)用方法

      u.SayHello();

      Console.ReadKey();

      }

      }

      /// <summary>

      /// 定義了一個接口FirstInterface

      /// </summary>

      interface FirstInterface

      {

      string Name//定義了一個屬性

      {

      get;

      set;

      }

      void SayHello();//關鍵定義了方法,但是沒有方法體!

      }

      /// <summary>

      /// 既然已經(jīng)繼承了接口,那必須要實現(xiàn)接口中的全部屬性,方法等,缺一不可,

      /// 例如如果不實現(xiàn)Name屬性,程序就會報錯!

      /// </summary>

      class UseInterface : FirstInterface

      {

      string name = "我的名字叫龍騰!";



      public string Name//重新實現(xiàn)接口中的屬性

      {

      get { return name; }

      set { name = value; }

      }

      /// <summary>

      /// 實現(xiàn)接口中的方法,這里不需要像多態(tài)中用到的 override 改寫方法,直接拿過來加上方法體就可!

      /// </summary>

      public void SayHello()

      {

      Console.WriteLine("大家好!"+this.name);

      }



      }



      }

      復制代碼

      運行結(jié)果:

      總結(jié):接口的本質(zhì)就是一些方法!但是要使用這些方法必須要按照一定的規(guī)則,否則就不能使用。定義接口,其實質(zhì)就是定義規(guī)則,要使用接口,必須在它的規(guī)則下進行!

       

      抽象

      抽象類和接口有一些相似之處,它們都包含由派生類繼承的成員,接口和抽象類都不能直接實例化?。ㄌ摰臇|西你怎么能拿來使用呢對吧?必須要使用第三方的東西來搭橋)

      復制代碼
      using System;//包含基本類和基類

      using System.Collections.Generic;//定義泛型集合的接口和類

      using System.Linq;//支持語言集成查詢

      using System.Text;//包含用于字符編碼等功能的對象



      namespace Test

      {

      class Program

      {

      static voidMain(string[] args)

      {

      UseMyAbstract u = new UseMyAbstract();//創(chuàng)建對象,調(diào)用方法

      u.SayHello();

      Console.ReadKey();

      }

      }

      /// <summary>

      /// 定義一個抽象類MyAbstract

      /// </summary>

      abstract class MyAbstract

      {

      public abstract void SayHello();//定義一個抽象方法,同樣沒有方法體!

      }

      /// <summary>

      ///定義一個 UseMyAbstract類 繼承 MyAbstract抽象類

      /// </summary>

      class UseMyAbstract : MyAbstract

      {

      public override void SayHello()//改寫抽象類MyAbstract中的方法SayHello()

      {

      Console.WriteLine("大家好!我是龍騰!");

      }

      }



      }

      復制代碼

      運行結(jié)果:

      總結(jié):抽象類可以擁有抽象成員,但是不能直接被實例化,并且沒有代碼體,它的執(zhí)行方法是在其派生類中實現(xiàn)的!注意,只要這個類中有一個方法定義為抽象方法,那么這個類必須定義為抽象類!

       

      以上只是我個人的一些小的學習感悟!希望能幫到那些需要幫到的人!

      作者:李正興     英文名:black_li
      出處:http://www.cnblogs.com/longteng1991/
      如果,您喜歡這篇文章的話,您可以分享給您的好友,請點擊按鈕【推薦】。
      如果,您想更快的閱讀我的最新文章,您可以關注我,請點擊按鈕【關注】。
      本文版權歸作者和博客園共有,歡迎轉(zhuǎn)載,但未經(jīng)作者同意必須保留此段聲明,且在文章頁面明顯位置給出原文連接,否則保留追究法律責任的權利。     

        本站是提供個人知識管理的網(wǎng)絡存儲空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點。請注意甄別內(nèi)容中的聯(lián)系方式、誘導購買等信息,謹防詐騙。如發(fā)現(xiàn)有害或侵權內(nèi)容,請點擊一鍵舉報。
        轉(zhuǎn)藏 分享 獻花(0

        0條評論

        發(fā)表

        請遵守用戶 評論公約

        類似文章 更多