Jon*_*eet 14
字段是实现细节 - 它们通常不应被视为API的一部分 - 这样您就可以在以后确切地更改事物的存储方式.如果你保护一个字段,它将可用于子类,而不是子类只能看到它们可以依赖的API.
如果您想在以后限制哪个值在该字段上有效,该怎么办?当它受到保护时,您不会得到任何验证或类似的任何内容.子类可以把任何旧垃圾放在那里.如果将其保密并提供受保护的setter方法,则可以应用适当的验证.
简而言之:将您的客户 - 通过子类化视为客户端的方式与您的客户通过调用方式非常相似.为他们提供一个API,并将您的实施细节保密.