🔥码云GVP开源项目 12k star Uniapp+ElementUI 功能强大 支持多语言、二开方便! 广告
扩展是一个快速扩展类或匿名对象 typedef 的方式。他和类很少用在一起,因为经典的继承通常是首选。 语法和无论是一个类还是typedef时是相同的: ~~~ variable = { > Type, /* new field definitions goes here */ } ~~~ 当和类一起使用扩展,你会总是需要投射实例为扩展的类型,以你为类不定义类型;总是注意何时这种范式使用投射因为它们是不安全的转换。 ~~~ class Main { static function main() { var p : Contact = cast new Person(); p.name = “John Doe”; p.telephone = “123456”; } } class Person { public var name : String; public function new() { } } typedef Contact = { > Person, telephone : String } ~~~ Flash9中的类实例不能被动态扩展(运行时添加字段),除非他们也实现为Dynamic。 扩展应用到typedef必须是完全相同的结构: ~~~ typedef Color = { r: Int, g: Int, b: Int } typedef AlphaColor = { > Color, a: Int } ~~~ 所有AlphaColor类型的对象也是Color类型;在这方面typedef扩展和标准类的继承非常相似,一个派生类的实例同时也是父类的实例。