2011-10-27 40 views

回答

14

字段是实现细节 - 它们通常不应被视为API的一部分 - 通过这种方式您可以更改后面的事情。如果你使一个字段受保护,它将可用于子类,而不是只能看到他们可以依赖的API的子类。

如果您想限制哪些值在以后的日期对该字段有效,该怎么办?当它受到保护时,你不会得到任何验证或类似的东西。子类可以把任何旧垃圾放在那里。如果您保持私密并提供受保护的setter方法,则可以应用适当的验证。

简而言之:将您的客户 - 通过子类别视为客户,就像您的客户通过呼叫一样。给他们一个API来处理,并保持你的实现细节是私人的。

+0

除此之外,请注意,如果您需要阻止来自外部客户端的访问,但允许访问子项,则可以使您的getter和setter受到保护。 – IanGilham

+0

感谢乔恩,我收到了消息。 –

3

大多数时候,当我创建继承时,我确保所有变量都是私有的。每当继承类想要从超类中获得某些东西时,他就可以使用getter方法获取值。

如果每个人都可以以硬核方式获取和设置变量,那么当设置该变量时,无法依赖应该运行的额外代码。超级班正在放弃自己的责任。

+0

我喜欢你把它放在“硬核方式”的方式......:P –

0

它的继承的概念。如果A类从类B继承,那么它可以访问受保护的变量和函数。因此,如果您不想授予其他任何课程的访问权限,请继续并将其声明为“私人”。

相关问题