以下代码似乎为编译器造成歧义(请参见底部附近的注释错误)。接口之间不能有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/

10-12 19:20