posts - 241,  comments - 116,  trackbacks - 0

           在 Java 中使用一個 getter 和 setter 符號,為對象的屬性提供一致的接口已成為一種標準實踐。我們在 Java 中不進行以下操作是有原因的:

          public String fullName;

          實際上,上述代碼在類及類的實現(xiàn)者之間創(chuàng)建了一個接口(或合同),該接口不允許我們在類的實例上訪問 fullName 屬性時更改返回結(jié)果的基礎(chǔ)實現(xiàn)dota流浪劍客和水晶室女等英雄初期裝備攻略。因此,如果有人使用 Java 代碼訪問數(shù)碼 fullName 屬性:

          blah = obj.fullName;

          或者設置 fullName 屬性:

          obj.fullName = "blah";

          那么,在 Java 中沒有辦法更改獲取或設置 fullName 屬性的行為。如果類的設計者想要更改獲取或設置屬性的基礎(chǔ)行為,他們必須更改類實現(xiàn)者與類進行交互的方式。這顯然不是理想之選,所以在 Java 中我們通常使用 get 和 set 函數(shù)隱藏屬性。Java 語言尚無 Java 屬性,所以我們使用多種方法來隱藏實現(xiàn)。因此,我們的 Java 類將是:

          private String fullName;

          public String getFullName() {
          return fullName;
          }

          public void setFullName(String fullName) {
          this.fullName = fullName;
          }

          這允許類設計者更改獲取和設置 fullName 屬性的行為,同時不更改外部接口。

          在 Flex 中,通常不必在對象上創(chuàng)建包裝 getter 和 setting 函數(shù),因為 ActionScript 支持屬性。這意味著,您通常僅可以創(chuàng)建如下的公共屬性: 

          public var fullName:String;

          如果獲取或設置 fullName 屬性的內(nèi)部實現(xiàn)需要更改,那么可以改編類,以具備 getter 和 setter 函數(shù),而無需更改類的外部接口:

          private var _fullName:String;

          public function get fullName():String {
          return _fullName;
          }

          public function set fullName(_fullName:String):void {
          this._fullName = _fullName;
          }

          對于類實現(xiàn)者來說,屬性 fullName 還可以通過常規(guī)符號獲取和設置:

          // getters
          blah = obj.fullName;
          blah = obj['fullName'];
          // setters
          obj.fullName = "blah";
          obj['fullName'] = "blah";

          獲取或設置屬性將調(diào)用 getter 和 setter 函數(shù),而不是直接訪問屬性。這支持對象接口的一致性,即便獲取和設置屬性的基礎(chǔ)實現(xiàn)發(fā)生了更改。這同樣支持屬性發(fā)生更改時類分配事件(這就是數(shù)據(jù)綁定是如何在 Flex 內(nèi)部工作的)。

          我注意到很多 Java 開發(fā)人員都對 ActionScript 類上的公共屬性非常警惕。不必!ActionScript 支持真正的屬性,因此您不再需要屬性 getter 和 setter,除非您正在進行一些非同尋常的操作。而且,您可以切換到 getter 和 setter,而無須更改對象的接口。

          posted on 2010-11-06 15:09 墻頭草 閱讀(737) 評論(0)  編輯  收藏

          只有注冊用戶登錄后才能發(fā)表評論。


          網(wǎng)站導航:
           
          人人游戲網(wǎng) 軟件開發(fā)網(wǎng) 貨運專家
          主站蜘蛛池模板: 大关县| 民勤县| 阿拉善右旗| 吉安市| 栾城县| 呼玛县| 班戈县| 杭锦旗| 麻栗坡县| 伊金霍洛旗| 扶风县| 津南区| 万全县| 科技| 翁牛特旗| 临颍县| 松滋市| 德清县| 石林| 慈利县| 霸州市| 宁河县| 枣阳市| 萝北县| 天津市| 德保县| 泊头市| 蒙阴县| 西昌市| 肃宁县| 乐平市| 古浪县| 满城县| 汤原县| 花垣县| 宜宾县| 兴义市| 水城县| 金沙县| 夹江县| 日土县|