我正在编写一个框架库,其中有一些我只想覆盖的方法,永远不会在库外调用。但是,使它们public
也没有安全风险。
我有这样一种印象,即被覆盖的方法在库中被声明为public
而protected
仅在存在安全风险时使用?
如果将它们公开没有可行的安全风险,是否有理由选择其中一种?
答案 0 :(得分:3)
安全性永远不是问题,因为反射可以规避包访问。 '保护'如果有人从类或其子类之外调用方法,那么这种方法就不能以合理的方式运行,这是一种向人类传达的方式。
答案 1 :(得分:1)
这基本上是一种风格问题。我的经验法则是尽可能采用限制性最强的政策 - 即,更喜欢protected
到public
。如果将来您决定要公开这些方法,则可以始终将它们设为public
。如果您从public
开始并且稍后必须更改其签名,那么您将面临破坏可能误用其他人的代码的风险。