继承过程中的访问控制与Swift和Cocoa背后的设计理念并不完全相符:
在Swift中设计访问控制级别时,我们考虑了两个主要用例:
- 对应用程序的其他部分隐藏
private
个类的详细信息- 在客户端应用程序中隐藏框架的
internal
个细节这些分别对应于
private
和internal
个访问级别.相比之下,
protected
将访问与继承混为一谈,增加了一个全新的控制轴.它实际上并没有提供任何真正的保护,因为子类总是可以通过新的公共方法或属性公开"受保护"的API.它也不提供额外的优化机会,因为新的覆盖可以来自任何地方.它的限制是不必要的——它允许子类,但不允许子类的任何助手访问某些内容.
还有进一步的解释.