Facebook Sharer
选择您要替换的背景颜色:
【农历新年】背景图片:
个性化设定
 注册  找回密码
查看: 1779|回复: 5
打印 上一主题 下一主题

ActionScript 3.0 关于使用setters和getters的问题。

[复制链接]

5

主题

0

好友

962

积分

青铜长老

Rank: 7Rank: 7Rank: 7Rank: 7Rank: 7Rank: 7Rank: 7

跳转到指定楼层
1#
发表于 2011-12-24 05:48 AM |只看该作者 |倒序浏览
本帖最后由 Venus228 于 2011-12-24 05:51 AM 编辑

各位大大们好。最近我在自学AS3,是用在Flash上面的语言。因为才刚刚学到OOP的阶段,有些东西还不是很明白,认识的还很浅。

想问的就是关于这个setter和getter的问题。我看过很多文章和许多在别的网站上面的讨论,有些人觉得应该养成使用setters和getters的习惯,有些人则认为setters和getters是多余的,只会增加文件的大小。

据我所学到目前为止,使用setters和getters可以让你更改/读取一个private property。

问题1:那为什么不用public variable呢?既然都要更改value就已经不像是private了啊。
问题2:就算只要做读取(read-only)而使用getters,那就用public const 就可以了不是吗?

有些人则说setters和getters的好处在于可以在更改/读取value的同时也可以执行其他的method。
另外有些人也说在某些程序debugging的时候setters和getters会给很大的帮助。至于这个我也是不明白,因为明明setter和getter的写法比直接用public variable来的复杂,在读的时候不是会更花时间吗?

AS3.0 public variables:
  1. public var something:Object;
复制代码
AS3.0 setters和getters的写法:
  1. private var _something:Object;

  2. public function set something(value:Object):void
  3. {
  4.   _something = value;
  5. }

  6. public function get something():Object
  7. {
  8.   return _something;
  9. }
复制代码
相信其他的Programming Language也会有用setter和getter的时候。可以分享一下经验吗?
想请大大们有什么建议,或者觉得什么时候应该用setter/getter或public var,可以指点一下小弟吗?
有些地方如果我写错了请不要见怪。我刚刚才接触OOP这个东西,请多多指教谢谢啦~




收藏收藏0

7

主题

1

好友

5108

积分

一流名嘴

Rank: 12Rank: 12Rank: 12

2#
发表于 2011-12-24 09:17 AM |只看该作者
各位大大们好。最近我在自学AS3,是用在Flash上面的语言。因为才刚刚学到OOP的阶段,有些东西还不是很明白, ...
Venus228 发表于 2011-12-24 05:48 AM




  1. public function get A():String {
  2.      return this._string;
  3. }

  4. public function set A(str:String):Void {
  5.     this._string = str;
  6. }
复制代码


  1. public function getA():String {
  2.     return this._string;
  3. }

  4. public function setA(str:String):Void {
  5.     this._string = str;
  6. }
复制代码


两者之間的赋予和取值方式不同罢了,使用 getter / setter 的方式比較接近直接使用 attributes, 如 classA.num = 1, 如果直接把 class 中的 attribute 設定為 public 的話,也許在外部時不小心赋予到其他值的時後要查問題就浪費時間了


回复

使用道具 举报

5

主题

0

好友

962

积分

青铜长老

Rank: 7Rank: 7Rank: 7Rank: 7Rank: 7Rank: 7Rank: 7

3#
发表于 2011-12-26 11:26 PM |只看该作者
两者之間的赋予和取值方式不同罢了,使用 getter / setter 的方式比較接近直接使用 att ...
Super-Tomato 发表于 2011-12-24 09:17 AM


嗯嗯 谢谢~ 那大大比较常用那一种形式的写法?


回复

使用道具 举报

7

主题

1

好友

5108

积分

一流名嘴

Rank: 12Rank: 12Rank: 12

4#
发表于 2011-12-27 08:59 PM |只看该作者
嗯嗯 谢谢~ 那大大比较常用那一种形式的写法?
Venus228 发表于 2011-12-26 11:26 PM



我比較喜欢用 getter 和 setter

myClass.editable = true;
if( myClass.editable ) {};



myClass.setEditable( true );
if( myClass.getEditable() ) {};


你會選择編寫時用哪種方式赋予 value 呢?


回复

使用道具 举报

5

主题

0

好友

962

积分

青铜长老

Rank: 7Rank: 7Rank: 7Rank: 7Rank: 7Rank: 7Rank: 7

5#
发表于 2011-12-28 01:26 AM |只看该作者
我比較喜欢用 getter 和 setter

myClass.editable = true;
if( myClass.editable ) {};



...
Super-Tomato 发表于 2011-12-27 08:59 PM


我还是比较偏向于用第一种方法吧。毕竟比较容易写。
不过第二种方法比较self-explain,读code的时候的确比较容易了解。只是要写额外的setter/getter method有点麻烦。。


回复

使用道具 举报

7

主题

1

好友

5108

积分

一流名嘴

Rank: 12Rank: 12Rank: 12

6#
发表于 2011-12-28 07:13 AM |只看该作者
我还是比较偏向于用第一种方法吧。毕竟比较容易写。
不过第二种方法比较self-explain,读code的时候的 ...
Venus228 发表于 2011-12-28 01:26 AM



對啊,第一種的方式簡單多了,不必讓 attributes 和 method 都搞亂,而且也没甚麼特别额外寫,只是把 method 的名稱前加上 get 或 set 罢了,而且在編寫 component 的時候 getter 和 setter 就很有帮助。


回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

JBTALKS.CC |联系我们 |隐私政策 |Share

GMT+8, 2024-10-25 08:20 AM , Processed in 0.122223 second(s), 26 queries .

Powered by Discuz! X2.5

© 2001-2012 Comsenz Inc.

Ultra High-performance Dedicated Server powered by iCore Technology Sdn. Bhd.
Domain Registration | Web Hosting | Email Hosting | Forum Hosting | ECShop Hosting | Dedicated Server | Colocation Services
本论坛言论纯属发表者个人意见,与本论坛立场无关
Copyright © 2003-2012 JBTALKS.CC All Rights Reserved
合作联盟网站:
JBTALKS 马来西亚中文论坛 | JBTALKS我的空间 | ICORE TECHNOLOGY SDN. BHD.
回顶部