Actionscript 3 不同名称空间中的AS3 Getter和companion setter
我试图通过扩展classed和Actionscript 3 不同名称空间中的AS3 Getter和companion setter,actionscript-3,getter-setter,Actionscript 3,Getter Setter,我试图通过扩展classed和read来创建一个可以设置的属性 我想不出一个具有公共getter的受保护属性的好命名约定,所以我尝试这样做: public function get name():String{ return _name; } protected function set name(string:String):void { _name = string; } 但是,我得到了错误(在扩展类中尝试设置名称时): 1178:尝试通过访问访问不可访问的属性名称 静态类型测试参
read来创建一个可以设置的属性
我想不出一个具有公共
getter的受保护
属性的好命名约定,所以我尝试这样做:
public function get name():String{ return _name; }
protected function set name(string:String):void
{
_name = string;
}
但是,我得到了错误(在扩展类中尝试设置名称时):
1178:尝试通过访问访问不可访问的属性名称
静态类型测试参考:TestComponent。
1059:属性是只读的
如果我将setter更改为public
,它可以正常工作。据我所知,AS3不允许您混合和匹配,两个访问器应该是相同的
我通常不提供setter使属性为只读,而是直接在内部设置\u name
。因为它是受保护的,所以后代可以访问它。据我所知,AS3不允许您混合和匹配,两个访问器应该是相同的
我通常不提供setter使属性为只读,而是直接在内部设置\u name
。因为它是受保护的,所以子代可以访问它。您可以像下面那样使用它
public class Test extends Object {
protected var _name:String;
public function get name():String {return _name;}
}
public class Test2 extends Test {
public function set name(s:String):void {
this._name = s;
}
}
你可以像下面那样使用它
public class Test extends Object {
protected var _name:String;
public function get name():String {return _name;}
}
public class Test2 extends Test {
public function set name(s:String):void {
this._name = s;
}
}
我采取了一种稍微不同的方法来实现我想要的:
public function get name():String{ return _name; }
public function set name(string:String):void
{
if(!_name.length)
_name = string;
else throw new Error("Property \"name\" can only be defined once.");
}
现在,name
将在扩展类中定义,但从那时起无法设置。我采用了一种稍微不同的方法来实现我想要的:
public function get name():String{ return _name; }
public function set name(string:String):void
{
if(!_name.length)
_name = string;
else throw new Error("Property \"name\" can only be defined once.");
}
现在,name
将在扩展类中定义,但从那时起无法设置。这个类是否扩展了任何具有属性“name”的类?@ymutlu-Nope,扩展了Object
。我添加了答案,希望有帮助。这个类是否扩展了任何具有属性“name”@ymutlu-Nope,扩展对象
。我添加了答案,希望能有所帮助。是的,很好。我有点想避免我对私密者使用的命名约定,虽然开头是。
-只是为了让我的扩展类更整洁,也就是说,我可以只做name=“blah”
是的,很好。有点想避免我对私密者使用的命名约定,尽管开头是。
-这样我的扩展类就更整洁了,也就是说,我可以只做name=“blah”