有人可以给我一个具体的例子,其中'私有'方法会完成一些无法用'protected'方法完成的事情吗?换句话说,我想知道为什么语言设计师会将“私有”方法放在Ruby中。
答案 0 :(得分:1)
这实际上取决于您的开发团队以及您的代码将如何使用。在Ruby中,这些标记通常是建议而不是硬性和快速的规则,如果有必要,可以绕过private
和protected
方法,但它们可以作为使用您调用它们的代码的人的强烈暗示不希望的。
private
是应该谨慎使用的东西,因为它可以使那些试图继承某些东西的人生活变得非常困难。 protected
通常已足够,并且有助于将外部代码引导到应该使用的方法。
有时需要private
,即您希望防止子类过多地了解父类的工作原理。这在您鼓励人们继承子类的库中更常见,但您也想要阻止一些不打算由它们使用的内部函数。这允许您以后随意重构这些方法,而不会破坏其他人的代码。
良好的面向对象设计的原则之一是控制你有多少方法曝光。太多曝光意味着你已经致力于让它们现在和未来的行为完全相同,除非你准备做出重大改变。暴露太少意味着您的课程可能难以使用,如果不是无用的话。找到这种平衡总是很棘手。
因此private
和protected
存在是有原因的,这与C ++,Java,PHP,Python和其他许多人有这些原因的原因大致相同。这是为了控制你的方法的使用方式和位置。