不同类的相同属性

时间:2013-11-21 14:01:20

标签: actionscript-3

我可以为不同的类提供相同的属性吗?

例如两个扩展Sprite和MovieClip的类,并且都具有OasicObj属性。

这有可能吗?

public class BasicObj
    {
        public var _id:uint;
        public var _type:String;
        public function SetType(type:String):void {
            _type = type;
        }
    }

public class ObjOne extends Sprite implements BasicObj
    {
        public function ObjOne():void {
            super();
        }
    }

public class ObjTwo extends MovieClip implements BasicObj
    {
        public function ObjTwo():void {
            super();
        }
    }

3 个答案:

答案 0 :(得分:1)

你在谈论一个界面。将BasicObj设置为接口(将其放在自己的.as文件中,并将'class'替换为'interface')。接口只包含函数的定义;也就是说,函数名称及其参数签名。这些函数在实现该接口的任何类中实现 接口是AS3实现多重继承的方式。他们还严格执行封装。

答案 1 :(得分:1)

没有什么可以阻止您将某种类型的属性声明为子类。

public class A extends MovieClip {
    public var bo:BasicObj;
    public function A() { 
        super();
    }
}
public class B extends Sprite {
    public var bo:BasicObj;
    public function B() {
        super();
    }
}

然后你正常引用这些属性。

var a:A=new A();
a.bo=new BasicObj();
a.bo.SetType("A");

答案 2 :(得分:0)

您可以实现这样的界面

public interface  BasicObj
{

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

public class ObjOne extends Sprite implements BasicObj
{
    public function ObjOne():void {
        super();
    }

    private var _type:String;

    public function set type(value:String):void {
        this._type = value;
    }


    public function get type():String {
         return this._type;
    }

}

public class ObjTwo extends Sprite implements BasicObj
{
    public function ObjTwo ():void {
        super();
    }

    private var _type:String;

    public function set type(value:String):void {
        this._type = value;
    }


    public function get type():String {
         return this._type;
    }

}