以下代码似乎为编译器造成歧义(请参见底部附近的注释错误)。接口之间不能有getter和setter分开吗?
public interface GetterInterface
{
function get test():int;
}
public interface SetterInterface
{
function set test(value:int):void;
}
public interface SplitTestInterface extends GetterInterface, SetterInterface
{
}
public class SplitTest implements SplitTestInterface
{
public function SplitTest()
{
}
/* INTERFACE test.SetterInterface */
public function set test(value:int):void
{
}
/* INTERFACE test.GetterInterface */
public function get test():int
{
return 0;
}
}
//Somewhere...
var splitTest:SplitTestInterface = new SplitTest();
splitTest.test = 2; //Error: Property is read-only.
最佳答案
我将以下内容放在一起(它们几乎与您的代码完全相同),并且对于get和set方法都可以正常工作。
/* IGet.as */
package {
public interface IGet
{
function get test():int;
}
}
/* ISet.as */
package {
public interface ISet
{
function set test(i:int):void;
}
}
/* ISplit.as */
package {
public interface ISplit extends IGet, ISet {
}
}
/* SplitTest.as */
package {
public class SplitTest implements ISplit {
public function SplitTest() {
}
public function set test(i:int):void {
trace("Set");
}
public function get test():int {
trace("Get");
}
}
}
主线上有以下内容:
var foo:SplitTest = new SplitTest();
foo.test;
foo.test = 1;
并输出:
Get
Set
关于actionscript-3 - AS3:不可能在不同的接口(interface)中具有相同变量的getter和setter吗?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/5120902/