Actionscript 3 在FLEX 3、ActionScript 3.0中使用ActionScript类和接口时出错
我目前是ActionScript的新手,我正在创建一个接口和类,该类在其中实现接口。 我在src/com文件夹中创建了接口和类。这是我到现在为止所做的代码 接口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
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" />