Windows移動開發(三)——閉關修鍊

來源:互聯網
上載者:User

標籤:多態   繼承   移動開發   windows   設計模式   

上一次,我們瞭解了委託,委託和Lambda運算式結合是一件灰常灰常爽的事情,這也是只有.Net才有,自己偷著笑去吧。幾天這次,我要介紹一下繼承和多態,這是進行物件導向編程必須熟練掌握的技術和思想。1.1 類繼承,兒子繼承父親的遺產,這是生活中的體現,在物件導向的編程中,父親和兒子都是對象的抽象集合,也就是類。什麼是類呢?就是一些具有共同特徵的對象集合,例如:狗都有四條腿,一條尾巴,兩隻眼睛,狗都會遊泳,都愛吃骨頭,所以我們把具有以上特徵的動物抽象成狗,我們進行物件導向編程也是這樣,物件導向的程式員必須具備抽象的能力。1.1.1 欄位欄位在類中屬於封裝的部分,一般是私人成員變數或常量,如:private int _num1;private bool _dispose;_num1與 _dispose都是所屬類的欄位。1.1.2 屬性屬性是類的靜態特徵,如狗的腿有幾條,眼睛有幾隻,都是狗的屬性,在物件導向的編程中,屬性是對欄位封裝,如:private int _num1; public int Num1  { get { return _num1; } set { _num1 = value; } }   private bool _dispose; public bool Dispose {  get { return _dispose; } set { _dispose = value; }}Num1和Dispose都是所屬類的屬性,他們對各自的欄位進行了封裝,有的屬性是唯讀,還有的屬性只能在建構函式中進行賦值,以後不可以修改,如下:    private int _dogColor;     /// <summary>     /// 唯讀屬性:狗的顏色     /// </summary>     public int DogColor     {  get { return _dogColor; }    }  private string _pid; /// <summary>  /// 只能在建構函式中賦值屬性:社會安全號碼  /// </summary>  public string PID {  get { return this._pid; } private set { this._pid = value; }  }1.1.3 方法方法是類的行為能力,例如狗遊泳,吃骨頭,這都是狗的行為能力,在物件導向編程中,方法的結構是這樣的:/// <summary>  /// 狗默默的吃方法,默默的所以是私人的  /// </summary>private void Eat()  { Console.WriteLine("真好吃啊!");  }/// <summary> /// 狗遊泳,判斷狗是否遊過了river河  /// </summary>  /// <param name="dogName">狗的名字</param>  /// <param name="river">河的名字</param>  /// <returns></returns> public bool Swim(string dogName,string river) { bool isSwim = false; if (!string.IsNullOrEmpty(river)) { Console.WriteLine(dogName + "遊過了" + river);  isSwim = true;  }  return isSwim;  }Eat和Swim都是狗類的方法,Eat方法沒有參數沒有返回值,Eat方法是私人的,只有狗類內部可以訪問Eat方法;Swim方法有兩個string型別參數,第一個參數是狗的名字,第二個參數是狗要遊過的河流,返回bool類型判斷狗是否遊過了該河流,Swim方法是公有的,所有狗對象都可以訪問Swim方法,關於private、protected、public的存取權限可以仔細閱讀微軟官方的MSDN協助文檔進行深入研究,不難理解,在這裡我就不過多介紹了,到此關於類的介紹就這些了,下面繼續介紹物件導向的核心知識之一——繼承。1.2 繼承1.2.1 繼承的原理繼承是建立在類的基礎上,具體類實現介面也可以叫做繼承,在C#中一個類只能繼承一個類,即不支援多重繼承,生活中也是這樣,一個人只能有一對親生父母;但是C#中一個類可以實現多個介面,實現介面可以理解為,我們學習了新的本領,如,我們學會了說話,我們就實現了說話的介面,我們學會了寫代碼,我們就實現了寫代碼的介面。可以看出,我們進行物件導向編程,就是類比生活製作生活,所以一個好的程式員必定是一個美好生活的締造者,廣大女同胞們要注意了,選老公一定要選程式員,選擇了程式員,你的後半生就幸福了,哈哈哈。C#中的繼承是這樣的:/// <summary>  /// 產品類  /// </summary>  public class Product  {  private string _name;  public string Name  {  get { return _name; }  set { _name = value; }}  private int _age;  public int Age  {  get { return _age; }  set { _age = value; }  }  }  /// <summary>  /// 發出聲音介面  /// </summary>  public interface Sound  {  bool MakeNoise();  }   /// <summary>  /// 顯示圖片介面  /// </summary>  public interface ShowImage  {  void Show(string path);  }  public class NewProduct : Product, Sound, ShowImage  { #region NewProduct類新成員  private string _color;  public string Color  {   get { return _color; } set { _color = value; }  } private void ChangeColor()  {  Console.WriteLine("顏色真的變了耶!");  }  #endregion  #region Sound 成員  public bool MakeNoise()  {  Console.WriteLine("哇塞,聲音好大啊!");  return true;  }  #endregion  #region ShowImage 成員 public void Show(string path) {  Console.WriteLine("哎呦,來自{0}圖片太漂亮了!",path);  }  #endregion }從上面代碼可以看出,介面沒有方法的具體實現,介面方法的具體實現代碼在繼承該介面的類中實現,但要保持簽名一致。在物件導向的編程中,子類具有父類的所有特徵,可以理解為子類是父類的擴充,父類裡的所有非私人屬性和非私人方法子類都可以訪問。1.2.1 繼承的使用實現介面也屬於繼承,那麼什麼時候繼承類,什麼時候繼承介面呢?從程式的可擴充型和複用性考慮,為了松耦合度,只有有明確的父子關係的兩個類才使用繼承類,而實現介面在程式設計模式中經常用到,易於擴充。比如,策略模式,對演算法進行封裝,經常用介面定義方法,然後具體類中具體實現,調用時由Context統一調用,在程式設計中使用適當的設計模式又是一件非常非常爽的事情,關於設計模式,我在這裡也不多介紹,如果想深入瞭解,可以觀看呂建中的官方視頻,也可以看《大話設計模式》這本書,看完之後,你會感覺更爽。1.3 多態多態按字面的意思就是“多種狀態”。在物件導向編程中,介面的多種不同的實現方式即為多態。其實多態更像是一種思想,不同實體實現同一介面是多態,重載函數方法是多態,方法重寫是多態等等,多態就是對同一功能有不同的實現方式,關於多態理解其中的思想是最為重要的,在物件導向編程中靈活運用多態那也是非常非常爽的一件事。
繼承多態總結:今天介紹的東西似乎有點多,其實不多,這些都是進行物件導向開發必須掌握的東西,如果你對上面說的內容感覺很陌生,那麼你目前是不適合做移動開發的,你最應該的馬上補充一下這是知識空白,當然物件導向的編程基礎遠不止這些,所以要想成為一流的開發人員,修鍊是必不可缺的了。好了,不在得瑟了,今天就到這裡,下次還有更爽的,敬請期待。我們下次見。

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.