2

嗨,我想知道是否可以让无包 () AS3 类在文件中的主类上调用私有方法。例如:

package demo
{
    public class MyDemoClass
    {
        var helper:FriendlyHelperClass = new FriendlyHelperClass(this)
    }

    private function methodToCall():void
    {
        ...
    }
}

public class FriendlyHelperClass
{
    public function FriendlyHelperClass(demo:MyDemoClass)
    {
        demo.methodToCall()
    }
}

从 FriendlyHelperClass 调用 methodToCall() 将失败,因为它是 MyDemoClass 的私有成员。有什么方法可以在不扩展 MyDemoClass 的情况下从 FriendlyHelperClass 调用 methodToCall() 方法。

基本上,我正在寻找 Java 具有的内部类功能或某种 C++ 风格的朋友类。

4

3 回答 3

2

简短的回答:没有。

在 ActionScript 中,您永远无法从类外部访问私有成员。您可以做的是使用命名空间而不是私有范围。这将允许某些成员访问选定的类。这是您将在 AS3 中获得的最接近的朋友课程。

于 2009-09-29T22:17:10.600 回答
0

恐怕这是不可能的,但如果你让类动态化,那么你可以在程序运行时对其进行编辑,并可能向其中添加一些有用的函数,以访问私有函数。我还没有尝试过。

动态类

于 2009-09-28T14:15:42.830 回答
0

无需测试代码,也无需了解您的全部问题。您可以尝试将所需的函数作为回调传递给嵌入式类。例如,

helper.methodToCallCallback = this.methodToCall;

然后在 FriendlyHelperClass 中:

this.methodToCallCallback();
于 2009-09-29T22:35:55.493 回答