我可以为不同的类提供相同的属性吗?
例如两个扩展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();
}
}
答案 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;
}
}