2.3. 创建成员属性
问题
我要创建public 成员属性
解决办法
使用隐含 getters 和 setters.
讨论
正如2.1节中所说的那样属性应该被申明为 private 或 protected。 public 属性并不是什么好主意,因为他不能体现封装性。要尽量做好封装,这意味着类不能暴露他的内部细节,public 属性使开发者能轻易破坏类或类实例。下面的简单例子是用了Public 属性:











构造一个Counter实例, 然后改变count 属性值,如:
var counter:Counter = new Counter( );
counter.count++;
但是,如果count属性被规定不能超过100,那么外部修改很可能无法保证,这样破坏了这个规定,一个办法就是设置 getters 和 setters,如下:


























另一个办法就是用隐式getters 和 setters. 隐式 getters 和 setters 就像申明方法那样,但是看起来又像属性getter 语法如下:
public function get name( ):Datatype {
}
setter 语法:
public function set name(value:Datatype):void {
}
下面定义隐式 getter 和 setter 方法:


























counter.count = 5;
trace(counter.count);
没有评论:
发表评论