Flex 继承属于 “is-a”类型的重用,就是子类对其父类的继承。子类拥有父类所有属性,可以增加自己的属性或重写父类的属性。
1、先写出一个测试接口。
package model {
public interface IOne {
function get name():String;
function set name(value:String):void;
function getNum():int;
}
}
2、为接口写一个实现类。
package model {
public class One implements IOne {
protected var _name:String;
public function Thing(name:String = "") {
this.name = name;
}
public function getNum():int {
throw new Error("没有实现 getNum 方法");
}
public function set name(value:String):void {
_name = value;
}
public function get name():String {
return _name;
}
}
}
One 类实现了 IOne接口;name属性使用了protected修饰、保证了子类有足够的访问权限;如果过没有实现getNum会抛出异常;
3、创建一个新类Two来继承One类,这样一来类Two也变成的集成实现了IOne接口。
package model {
public class Two extends One {
public var num:int;
public var due:Date;
public static const ONE_DAY_IN_MSEC:Number = 1000*60*60*24;
public function Two(name:String = "") {
super(name);
due = new Date();
due.setTime(due.getTime() + ONE_DAY_IN_MSEC);
}
public override function getNum():int {
return num;
}
}
}
类Two中使用override来重写One中的getNum方法;Two 继承 extends 自 One。
习惯于使用Java的同学会想到abstract class来替代上述方法,但是在ActionScript3中并没有抽象类的概念,此处可以理解为变相的“抽象类”。