Answers:
简短答案:是
更长的答案:
是的,但这不应该被解释为建议以编写私有的类开始。在确定接口之前,该方法通过关注实现细节来隐含类设计。
设计类时要考虑的最重要方面之一是如何使用它。在开始考虑私有/实现细节之前,需要先考虑您的公共方法。
此外,这种方法通常会错过机会问自己“我将如何为该课程编写单元测试?” -即使您实际上没有编写单元测试,这也是一个重要的问题。(相关:“促进可测试代码的设计原则是什么?”)
因此,一旦定义了公共接口,则将其余部分默认为私有是一个好主意,因为其中大多数通常是具体的实现细节,而该类之外的任何内容都不关心。
“然后仅在子类需要它时才将其升级到受保护,而在其他类需要它时才将其升级到受保护的吗?”
那是错误的方法。在设计时,您应该知道要授予哪些公共访问权限。通常,您授予公众访问权限,因为这是您课堂的全部目的。并且您授予受保护的访问权限,因为您希望子类访问事物。而您将private用于其他人的事。
现在,如果某人需要访问他们无法访问的内容,那么您应该认真考虑这一需求。他们不需要访问权限,否则您的设计是错误的。也许您的设计是错误的,并且某些不公开的应该公开,因此您可以更改它。但是,如果你的设计是正确的,那么有什么不对的需要,所以你解决这不是破坏你的设计。
private
还是protected
?