C#溫故而知新學習系列之面向對象編程—12-屬性

        字段

  字段是存儲類要滿足其設計所需要的數據,字段是與類相關的變量

  比如以前講的Cat類中的private string _name;_name其實就是一個字段,它通常是類的私有變量

  屬性

  屬性是一個方法或者一對方法,但在調用它的代碼來看,它是一個字段,即屬性適合以字段的方式使用方法調用的場合

  通常字段都是private,即私有變量,而屬性是public,即公有變量,那麼在這裏_shoutnum就是私有的字段,而ShoutNum就是公有的對外屬性,由於是對外的,一般首字母大寫,而字段一般首字母並且小寫前面加上“_”

  屬性有兩個方法get和set,get訪問器返回與聲明的屬性相同的數據類型,表示的意思是調用時以得到內部字段的值或引用,set訪問器沒有顯式設置參數,但是它有一個隱式參數,用關鍵字value表示,它的作用是調用屬性時可以給內部字段或引用賦值

  private int _shoutnum = 3;

  public int ShoutNum

  {

    //get表示外界調用時可以得到_shoutnum的值

    get{return _shoutnum };

    //set表示外界可以給內部的_shoutnum賦值

    set{_shoutnum  = value};

  }

  思考

  我們把字段的修飾符改成public int _shoutnum = 3,不就可以做到對變量即讀又寫了嗎?不就可以跳過屬性,不用屬性了嗎?

  是的,如果僅僅是可讀可寫,那屬性的作用就與聲明瞭public的字段沒什麼區別了,但是我們希望對外公開的數據能得到更多的控制,這就好像我們的房子,我們並不希望房子是全部透明的,那樣你在家裏幹什麼都被看的清清楚楚,毫無隱私而言,通常我們的房子有窗戶和門,但是更多的是不透明的牆,這門和窗就是public,而房子內的東西就是private,門窗是可以控制的,我們不希望所有人都從門隨意進入,也不希望蒼蠅從窗子來回出入,這就是屬性的作用了,如果你把字段聲明爲public,那麼就意味着不設防的門窗,任何時候調用者都可以讀取或寫入,這回是非常糟糕的一件事情,如果對外的數據寫成屬性就會好很多

  就好比給窗子裝了紗窗,只讓空氣和陽光進來,文字蒼蠅就不能進入,多了層控制,多了層保護

  private int _shoutnum = 3;

  public int ShoutNum

  {

    get{return _shoutnum };

    //控制叫聲次數,最多隻能叫5聲,多了層控制,多了層保護

    set

    {

      if(value <= 5)

        _shoutnum = value;

      else

        _shoutnum = 5;

    };

  }

  

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章