【发布时间】:2013-12-30 19:45:35
【问题描述】:
我正在使用 Actionscript (Flex Mobile) 开发应用程序,但遇到了父子关系问题。我有一个继承自 ClassA 的 ClassB,而 ClassA 的方法之一需要访问 ClassB 的组件。该方法无法访问设置为 protected 或 private 的组件/属性/变量。我不想将其设置为 public,即使这样可以解决问题。
这是父代码:
public class BaseView extends View
{
...
protected function configureComponents(componentName:String):void
{
...
var service:HTTPService = this[componentControler.Id] as HTTPService;
...
}
...
}
这是子代码:
public class Contacts extends BaseView
{
...
protected var callListService:HTTPService;
override protected function createChildren():void
{
...
super.createChildren();
...
callListService = new HTTPService();
configureComponents("callListService");
}
...
}
前面的只是我所拥有的一个示例,但却是我所需要的重要部分。另外,当我运行代码时,我收到以下错误:
错误 #1069:在 views.home.Contacts 上找不到属性 callListService,并且没有默认值。
希望你能帮我解决这个问题。
提前致谢,
塞巴斯蒂安
【问题讨论】:
-
这篇博文有帮助吗? flextras.com/blog/index.cfm/2013/2/1/… ?也许不是;但听起来你在谈论面向对象的层次结构而不是显示层次结构。类不能访问在其子级中定义的元素;他们根本不了解他们的孩子。我会补充一点,根据代码审查,我对你想要做什么感到困惑。
-
只要受保护的成员在 A 类中声明,您就应该能够访问从 A 继承的受保护成员(A 类不必实现该成员,或者 B 类可以提供不同的实现)。见as3dp.com/2010/12/…
-
艾米,请将其作为解决方案发布,以便我将其标记为正确。
-
@SebastianT 你是在说我自己还是艾米?
-
@Reboog711 致 Amy,因为我选择了她的解决方案。我在父级上定义了变量,但在需要它的子级中实例化。她没有回答,如果你愿意,你可以把它写成一个解决方案,我会把它标记为正确答案。
标签: actionscript-3 apache-flex inheritance parent-child