我正在读一本书,其中有一个指南:
“如果一个类声明了与其超类不同的指定初始值设定项,则必须覆盖超类的指定初始值设定项才能调用新的指定初始值设定项”
换句话说,据我了解,这条准则是,如果我从其超类中对我的类进行子类化,并且我的子类有一个与 des 不同的指定初始值设定项。它的超类的初始值设定项,那么在我的子类中,我必须覆盖我的超类的指定初始值设定项,并在其中调用我的子类的指定初始值设定项。
这是真的?我们必须一直这样做吗?谢谢。
@justin 基本上说到点上了。
Objective-C 中的方法是继承的。这意味着如果超类有一个初始化方法(初始化方法只是方法),并且您的子类没有重写它,那么您的子类将继承该超类的初始化方法。这意味着人们总是可以在子类的对象上调用超类的初始化程序(继承和子类型多态性的基本结果)。但这可能不是您所期望的。超类的初始化程序可能不会执行类所需的所有初始化。
这就是为什么您应该重写超类的初始值设定项。如果您不希望人们在您的类的对象上使用该初始值设定项,则应该在该初始值设定项中引发异常。否则,您应该重写它来为您的类进行任何适当的初始化。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)