ThinkChat2.0新版上线,更智能更精彩,支持会话、画图、视频、阅读、搜索等,送10W Token,即刻开启你的AI之旅 广告
扩展是一个快速扩展类或匿名对象 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扩展和标准类的继承非常相似,一个派生类的实例同时也是父类的实例。