【问题标题】:How to access child properties/component from parent method如何从父方法访问子属性/组件
【发布时间】:2013-12-30 19:45:35
【问题描述】:

我正在使用 Actionscript (Flex Mobile) 开发应用程序,但遇到了父子关系问题。我有一个继承自 ClassA 的 ClassB,而 ClassA 的方法之一需要访问 ClassB 的组件。该方法无法访问设置为 protectedprivate 的组件/属性/变量。我不想将其设置为 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


【解决方案1】:

从父类访问子变量不是一个好习惯,但是,在这些情况下您需要这样做,最好的选择可能是在父类中定义变量,然后在子类上创建一个实例。以这种方式实现,父级可以轻松访问子级的变量实例。

【讨论】:

    猜你喜欢
    • 2020-10-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多