2.3。创建成员属性

问题
我要创建public 成员属性

解决办法
使用隐含getters 和setters.

讨论
  正如2.1节中所说的那样属性应该被申明为private 或protected。public 属性并不是什么好主意,因为他不能体现封装性。要尽量做好封装,这意味着类不能暴露他的内部细节,public 属性使开发者能轻易破坏类或类实例。下面的简单例子是用了Public 属性:
+展开
-ActionScript
package {
public class Counter {
public var count:uint;
public function Counter( ) {
count = 0;
}
}
}

构造一个Counter实例, 然后改变count 属性值,如:
+展开
-ActionScript
var counter:Counter = new Counter( );
counter.count++;

但是,如果count属性被规定不能超过100,那么外部修改很可能无法保证,这样破坏了这个规定,一个办法就是设置getters 和setters,如下:
+展开
-ActionScript
package {
public class Counter {
private var _count:uint;
public function Counter( ) {
_count = 0;
}
public function getCount( ):uint {
return _count;
}

public function setCount(value:uint):void {
if(value < 100) {
_count = value;
}
else {
throw Error( );
}
}
}
}

另一个办法就是用隐式getters 和setters. 隐式getters 和setters 就像申明方法那样,但是看起来又像属性getter 语法如下:
+展开
-ActionScript
public function get name( ):Datatype {
}

setter 语法:
+展开
-ActionScript
public function set name(value:Datatype):void {
}

下面定义隐式getter 和setter 方法:
+展开
-ActionScript
package {
public class Counter {
private var _count:uint;
public function Counter( ) {
_count = 0;
}
public function get count( ):uint {
return _count;
}
public function set count(value:uint):void {
if(value < 100) {
_count = value;
}
else {

throw Error( );
}
}
}
}
counter.count = 5;
trace(counter.count);

加支付宝好友偷能量挖...


评论(0)网络
阅读(116)喜欢(0)flash/flex/fcs/AIR