Actionscript:在自己的构造函数中访问 private setter
Actionscript: Accessing private setter in own constructor
我试图设置一个变量,其 setter 在同一个 class 的构造函数中是私有的,但编译器一直在敲我的头:
1059 Property is readonly
1178: Attempted access of inaccessible property gesamtBetrag through a
reference with static type ImmoObject.
package
{
public class Huhu
{
private var _prop1:int;
public function Huhu()
{
prop1 = 24;
}
public function get prop1():int
{
return _prop1;
}
private function set prop1(value:int):void
{
_prop1 = value;
}
}
}
我是不是漏掉了什么?
Getter/setter 必须具有相同的签名,否则它们根本不相关。你有一个 public getter 和一个私有的 setter,因此它们没有关系并且 public getter 没有 setter 所以它是只读的。
如前所述,您不能同时拥有 private
setter 和 public
getter。 getter 和 setter.
的访问修饰符必须相同
你 可以 做的只是有一个 public
getter 并且从 class 构造函数或其他地方你设置 private
直接变量:
class Foo {
private var _prop:int;
public function Foo() {
_prop = 24;
}
public function get prop():int { return _prop; }
}
(请注意,在这种情况下,您实际上可以使用一个值 ex private _prop:int = 24
初始化私有变量。)
您还可以公开其他更改私有变量的方法,例如函数或具有不同名称的 setter:
class Foo {
private var _prop:int;
public function get prop():int { return _prop; }
protected function setProp(prop:int):void {
_prop = prop;
}
protected function set propValue(value:int):int {
_prop = value;
}
}
编辑:明确地说,访问类型必须匹配属性的getter/setters,但您可以混合使用private/public 访问 getter/setter 方法 ,风格类似于 Java:
private prop:int;
public getProp():int { return prop; }
private setProp(value:int):void {
prop = value;
}
这不是您在 AS3 中看到的常见样式,因为我们有正式的 get
/set
属性 语法,但它仍然完全有效。
我试图设置一个变量,其 setter 在同一个 class 的构造函数中是私有的,但编译器一直在敲我的头:
1059 Property is readonly
1178: Attempted access of inaccessible property gesamtBetrag through a reference with static type ImmoObject.
package
{
public class Huhu
{
private var _prop1:int;
public function Huhu()
{
prop1 = 24;
}
public function get prop1():int
{
return _prop1;
}
private function set prop1(value:int):void
{
_prop1 = value;
}
}
}
我是不是漏掉了什么?
Getter/setter 必须具有相同的签名,否则它们根本不相关。你有一个 public getter 和一个私有的 setter,因此它们没有关系并且 public getter 没有 setter 所以它是只读的。
如前所述,您不能同时拥有 private
setter 和 public
getter。 getter 和 setter.
你 可以 做的只是有一个 public
getter 并且从 class 构造函数或其他地方你设置 private
直接变量:
class Foo {
private var _prop:int;
public function Foo() {
_prop = 24;
}
public function get prop():int { return _prop; }
}
(请注意,在这种情况下,您实际上可以使用一个值 ex private _prop:int = 24
初始化私有变量。)
您还可以公开其他更改私有变量的方法,例如函数或具有不同名称的 setter:
class Foo {
private var _prop:int;
public function get prop():int { return _prop; }
protected function setProp(prop:int):void {
_prop = prop;
}
protected function set propValue(value:int):int {
_prop = value;
}
}
编辑:明确地说,访问类型必须匹配属性的getter/setters,但您可以混合使用private/public 访问 getter/setter 方法 ,风格类似于 Java:
private prop:int;
public getProp():int { return prop; }
private setProp(value:int):void {
prop = value;
}
这不是您在 AS3 中看到的常见样式,因为我们有正式的 get
/set
属性 语法,但它仍然完全有效。