Unlike subclasses in Objective-C,Swift subclasses do not inherit
their superclass initializers by default.
但随后它说:
When you write a subclass initializer that matches a superclass
designated initializer,you are effectively providing an override of
that designated initializer. Therefore,you must write the override
modifier before the subclass’s initializer deFinition.
来自Java背景,其中构造函数不是继承的,我不明白它是如何工作的.为什么我们要覆盖默认情况下不继承的初始化程序?在我看来,像构造函数一样,初始化程序将隐式命名为类本身,并且可以在子类中重载(例如,Java中的类Dog只有名为Dog的构造函数).但我不明白这个覆盖父初始化器的想法.
解决方法
考虑一个名为Chihuahua的Dog子类:如果你没有在Chihuahua中实现任何指定的初始值设定项,你自动继承Dog初始值设定项,而不需要额外的代码.但是如果您确实需要因某种原因覆盖它,那么只需要从Chihuahua指定的初始化程序中调用Dog指定的初始化程序.如果您的Chihuahua初始化程序与Dog指定的初始化程序具有相同的签名,则必须显式提供override关键字.
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。