所需的并不强制我在我的子类中实现该方法。如果我想覆盖我父类所需的指定的初始化程序,我需要编写必需的而不是覆盖。我知道它是如何工作的,但不明白为什么我应该这样做。
所需的好处是什么?
据我所知,像C#这样的语言没有这样的东西,只要重写就可以正常工作。
编译器需要以这种方式满足的一种情况涉及协议,并且如下所示:
@H_404_1@protocol FlIEr { init()}class Bird: FlIEr { init() {} // compile error}问题是如果Bird有一个子类,那个子类将必须实现或继承init,而且你没有保证。根据需要标记Bird的init可以保证。
或者,您可以将Bird标记为最终,从而保证相反,即它将永远不会有一个子类。
另一种情况是你有一个工厂方法,可以通过调用同一个初始化器来创建一个类或其子类:
@H_404_1@class Dog { var name: String init(name: String) { self.name = name }}class NoisyDog: Dog {}func dogMakerAndnamer(whattype: Dog.Type) -> Dog { let d = whattype.init(name: "FIDo") // compile error return d}dogMakerAndnamer在Dog或Dog子类中调用init(name :)初始化器。但是编译器怎么能确保一个子类将有一个init(name :)初始化器?所需的指定使编译器的恐惧平静。
总结以上是内存溢出为你收集整理的为什么要在Swift类中使用所需的初始化程序?全部内容,希望文章能够帮你解决为什么要在Swift类中使用所需的初始化程序?所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)