Actionscript 3 在FLEX 3、ActionScript 3.0中使用ActionScript类和接口时出错

Actionscript 3 在FLEX 3、ActionScript 3.0中使用ActionScript类和接口时出错,actionscript-3,apache-flex,actionscript,flex3,Actionscript 3,Apache Flex,Actionscript,Flex3,我目前是ActionScript的新手,我正在创建一个接口和类,该类在其中实现接口。 我在src/com文件夹中创建了接口和类。这是我到现在为止所做的代码 接口 package com { public interface TestData { function getInput(str:String):void function getOutput():String } } 阶级 mxml文件 public var etn:Entity

我目前是ActionScript的新手,我正在创建一个接口和类,该类在其中实现接口。 我在src/com文件夹中创建了接口和类。这是我到现在为止所做的代码

接口

package com
{
    public interface TestData
    {
        function getInput(str:String):void
        function getOutput():String
    }
}
阶级

mxml文件

public var etn:EntityEL = new EntityEL();

public function btnClick():void
        {
            etn.getInput(value.text);
            Alert.show(etn.getOutput());
        }


<mx:Button label="Button Click" click="{btnClick();}" />
<mx:TextInput id="value" />
公共变量etn:EntityEL=newentityel(); 公用函数btnClick():void { etn.getInput(value.text); Alert.show(etn.getOutput()); } 我收到一个错误“1044:命名空间com中的接口方法getInput:TestData未由类com:EntityEL实现。


请帮我解决这个问题。

接口的思想是定义调用者和被调用者对象之间的约定:可以访问哪些方法,需要哪些参数,以及将返回什么类型的数据

为了使该契约有任何意义,这些方法必须是可访问的,以便允许“外部世界”调用它们

当您省略访问修饰符时,Flex编译器假定
internal
为默认值,这意味着同一个包中的类有权访问这些方法——因此在某种程度上,这个契约似乎得到了履行。对于任何其他名称空间也是如此

奇怪的是:您的方法实现必须是
公共的


但是,您可以将接口声明为
internal
,这样只允许包中的类来实现它,这样就可以使API保持内部状态,如果这是您的意图的话。

接口的思想是定义调用方和被调用方对象之间的约定:可以访问哪些方法,需要哪些参数,以及将返回什么类型的数据

为了使该契约有任何意义,这些方法必须是可访问的,以便允许“外部世界”调用它们

当您省略访问修饰符时,Flex编译器假定
internal
为默认值,这意味着同一个包中的类有权访问这些方法——因此在某种程度上,这个契约似乎得到了履行。对于任何其他名称空间也是如此

奇怪的是:您的方法实现必须是
公共的


但是,您可以将接口声明为
internal
,这样只允许包中的类来实现它,这样就可以使API保持内部状态,如果这是您的意图的话。

尝试将
public
添加到EntityEL类中的实现方法中。我认为当类实现接口时,它们必须是公共方法。谢谢你的回答。如果我声明为public,那么接口是否有任何用途?它只是创建一个类并调用该类的方法。嗯,定义接口的目标因情况而异。在这里的示例中,如果没有任何其他类使用该接口,我认为不需要创建该接口。我不认为这是公共的还是私人的问题?@sagarawal您的接口定义了如何访问类,而不是类的功能。接口可以由许多不同的类实现,一个类可以实现许多接口(但只能扩展一个!)。接口对于保持程序松散耦合,从而实现可重用和模块化至关重要。例如,这对于单元测试非常重要,当您与多个开发人员一起工作时,或者在多个SWF中传播程序时。请尝试将
public
添加到EntityEL类中实现的方法中。我认为当类实现接口时,它们必须是公共方法。谢谢你的回答。如果我声明为public,那么接口是否有任何用途?它只是创建一个类并调用该类的方法。嗯,定义接口的目标因情况而异。在这里的示例中,如果没有任何其他类使用该接口,我认为不需要创建该接口。我不认为这是公共的还是私人的问题?@sagarawal您的接口定义了如何访问类,而不是类的功能。接口可以由许多不同的类实现,一个类可以实现许多接口(但只能扩展一个!)。接口对于保持程序松散耦合,从而实现可重用和模块化至关重要。例如,这对于单元测试非常重要,当您与多个开发人员一起工作时,或者在多个SWF中传播程序时。
public var etn:EntityEL = new EntityEL();

public function btnClick():void
        {
            etn.getInput(value.text);
            Alert.show(etn.getOutput());
        }


<mx:Button label="Button Click" click="{btnClick();}" />
<mx:TextInput id="value" />