🔥码云GVP开源项目 12k star Uniapp+ElementUI 功能强大 支持多语言、二开方便! 广告
当继承一个类它可以重新定义某个函数的行为。要这样使用同一个签名定义一个新的函数(相同的访问修饰符,相同的名称,相同的参数,相同的返回类型),在子类中声明。 要强调一点一个存在的方法已经被重新定义, override 修饰符可以添加到函数声明,在 function 关键字前。 Haxe编译器接受一个 -override 开关;当这个开关打开,编译器会抛出一个错误,当一个重载的方法没有使用 override关键字的时候。保持这个开关打开是一个好的实践,帮助我们避免名称冲突。 BlogEntry 和Article 类现在完全相同并共享同样的方法。他们的区别是 Article 代表一个内容,不是每天的日记,但是是更加有组织和详细的文本,可能是一些作者投入了更大精力并可能有利于计划的出版。对于这个目的,新的方法 publishOn 被添加,接受一个任意的发布日期。 ~~~ class Article extends BaseEntry { public function publishOn(date : Date) : Void { publishedOn = date; } private override function getOnlineInfo() : String { return if(publishedOn != null && publishedOn.getTime() > Date.now().getTime()) “Not yet on-line, scheduled for “ + DateTools.format(publishedOn, “%Y-%m-%d”); else super.getOnlineInfo(); } } ~~~ 在一个重定义的函数,如果你希望调用重写的定义必须使用 super 标识符。 getOnlineInfo() 方法被引用来调整额外的功能。在 true 部分,一个新的情况关于未来计划发布日期被介绍,而 false 条件重新调用BaseEntry类定义的原来的函数。 多个类共享同样的函数定义使用不同的实现,在OOP中叫做多态性。