Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/apache-flex/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Apache flex flex接口问题_Apache Flex_Actionscript_Interface_Instance - Fatal编程技术网

Apache flex flex接口问题

Apache flex flex接口问题,apache-flex,actionscript,interface,instance,Apache Flex,Actionscript,Interface,Instance,在上面的代码中,IBrowserManager是一个接口,BrowserManager.getInstance()是 返回IBrowserManager类型的对象。但是,从我对接口的了解来看, 不能创建接口的实例吗?那么,我怎么能创建一个实例呢 是否在此处创建接口?您不创建接口的实例。这里得到的是实现该接口的类的实例。很自然,您可以将IBrowserManager类型的变量赋值给一个实现IBrowserManager的BrowserManager类的实例。假设您有一个接口IPerson,它定义了

在上面的代码中,IBrowserManager是一个接口,BrowserManager.getInstance()是 返回IBrowserManager类型的对象。但是,从我对接口的了解来看, 不能创建接口的实例吗?那么,我怎么能创建一个实例呢
是否在此处创建接口?

您不创建接口的实例。这里得到的是实现该接口的类的实例。很自然,您可以将IBrowserManager类型的变量赋值给一个实现IBrowserManager的BrowserManager类的实例。

假设您有一个接口IPerson,它定义了两个成员——姓名和性别:

<?xml version="1.0" encoding="utf-8"?>
<mx:WindowedApplication xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute">
    <mx:Label id="lb" text="check"/>
    <mx:Script>
        <![CDATA[
            import mx.managers.BrowserManager;
            import mx.managers.IBrowserManager;
            public var brm:IBrowserManager = BrowserManager.getInstance();
        ]]>
    </mx:Script>
</mx:WindowedApplication>
。。。您有两个具体的类,Woman和Man,它们都实现了IPerson接口

public interface IPerson
{
    function get name():String;
    function set name(value:String):void;

    function get gender:String;
    function set gender(value:String):void;
}

然后,您最终可以执行以下操作:

public class Woman implements IPerson
{
    private var _name:String;
    private var _gender:String;

    public function Woman(name:String, gender:String)
    {
        this.name = name;
        this.gender = gender;   
    }

    public function get name():String
    {
        return _name;
    }

    public function set name(value:String):void
    {
        _name = value;
    }

    public function get gender()
    {
        return _gender;
    }

    public function set gender(value:String):void
    {
        _gender = value;
    }
}
。。。也就是说,对男人和女人的具体实现进行操作(在本例中,跟踪属性),就好像他们是同一种对象一样,因为他们都符合IPerson接口(即,两者都定义name和gender属性)

这是工作中的面向对象原则——有时你会听到它的信条,“编程到接口,而不是实现。”希望这能有所帮助

public class Woman implements IPerson
{
    private var _name:String;
    private var _gender:String;

    public function Woman(name:String, gender:String)
    {
        this.name = name;
        this.gender = gender;   
    }

    public function get name():String
    {
        return _name;
    }

    public function set name(value:String):void
    {
        _name = value;
    }

    public function get gender()
    {
        return _gender;
    }

    public function set gender(value:String):void
    {
        _gender = value;
    }
}
var crowdOfPeople:ArrayCollection = YourCrowdOfPeopleClass.getInstance();

for each (var p:IPerson in crowdOfPeople)
{
    trace(p.name);
    trace(p.gender);
}