Java:我打算只覆盖的库方法的受保护或公共访问?

时间:2015-01-08 18:44:32

标签: java methods access-modifiers

我正在编写一个框架库,其中有一些我只想覆盖的方法,永远不会在库外调用。但是,使它们public也没有安全风险。 我有这样一种印象,即被覆盖的方法在库中被声明为publicprotected仅在存在安全风险时使用? 如果将它们公开没有可行的安全风险,是否有理由选择其中一种?

2 个答案:

答案 0 :(得分:3)

安全性永远不是问题,因为反射可以规避包访问。 '保护'如果有人从类或其子类之外调用方法,那么这种方法就不能以合理的方式运行,这是一种向人类传达的方式。

答案 1 :(得分:1)

这基本上是一种风格问题。我的经验法则是尽可能采用限制性最强的政策 - 即,更喜欢protectedpublic。如果将来您决定要公开这些方法,则可以始终将它们设为public。如果您从public开始并且稍后必须更改其签名,那么您将面临破坏可能误用其他人的代码的风险。