Java:保护或 public 访问我打算仅覆盖的库方法?

Java: protected or public access for library methods that I intend to override only?

我正在编写一个框架库,其中有一些方法只打算被覆盖,永远不会在库外调用。但是,使它们 public 也没有安全风险。 我的印象是,要覆盖的方法在库中声明为 public,而 protected 仅在存在安全风险时才使用? 如果通过制作它们没有可行的安全风险 public 是否有任何理由选择一个或另一个?

安全永远不是手边的问题,因为反射可以绕过包访问。 'protected' 是一种与人类交流的方式,如果有人从 class 或其子 class 外部调用该方法,则 class 的设计不适合以合理的方式运行es.

这基本上是风格问题。我的经验法则是尽可能采用最严格的政策 - 即,更喜欢 protected 而不是 public。如果将来您决定要公开这些方法,您可以随时制作它们 public。但是,如果您开始时使用它们 public 并且稍后必须更改它们的签名,那么您将面临破坏可能错误使用它们的其他人的代码的风险。