Closed 。这个问题是基于意见的 /help/closed-questions 。目前不接受答案。
我一直在寻找,我知道理论上的区别。
public - 任何类/函数都可以访问该方法/属性。
受保护的 - 只有此类和任何子类可以访问方法/属性。
private - 只有此类可以访问方法/属性。甚至不会被继承。
一切都很好,问题是,什么是实际的 他们之间的区别?你什么时候用private
你什么时候会使用protected
?对此是否有标准或可接受的良好实践?
到目前为止,为了保留继承和多态性的概念,我使用public
对于任何应该从外部访问的内容(例如构造函数和主类功能),以及protected
用于内部方法(逻辑、辅助方法等)。我走在正确的轨道上吗?
(请注意,这个问题是给我的,但也供将来参考,因为我还没有见过这样的问题)。
不,你没有走在正确的道路上。一个好的经验法则是:让一切尽可能私密。这使您的类更加封装,并允许更改类的内部结构,而不会影响使用您的类的代码。
如果您将类设计为可继承的,那么请仔细选择可以从子类重写和访问的内容,并将其设置为受保护的(如果您想让它可访问但不可重写,那么就 Java 而言,这是最终的)。但请注意,一旦您接受类的子类,并且存在受保护的字段或方法,则该字段或方法就是该类的公共 API 的一部分,并且以后可能无法在不破坏子类的情况下进行更改。
不打算被继承的类应该被设置为final(在Java 中)。为了进行单元测试,您可能会放宽一些访问规则(私有到受保护,最终到非最终),但随后将其记录下来,并明确表示尽管该方法受保护,但不应覆盖它。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)