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
并且稍后必须更改它们的签名,那么您将面临破坏可能错误使用它们的其他人的代码的风险。
我正在编写一个框架库,其中有一些方法只打算被覆盖,永远不会在库外调用。但是,使它们 public
也没有安全风险。
我的印象是,要覆盖的方法在库中声明为 public
,而 protected
仅在存在安全风险时才使用?
如果通过制作它们没有可行的安全风险 public 是否有任何理由选择一个或另一个?
安全永远不是手边的问题,因为反射可以绕过包访问。 'protected' 是一种与人类交流的方式,如果有人从 class 或其子 class 外部调用该方法,则 class 的设计不适合以合理的方式运行es.
这基本上是风格问题。我的经验法则是尽可能采用最严格的政策 - 即,更喜欢 protected
而不是 public
。如果将来您决定要公开这些方法,您可以随时制作它们 public
。但是,如果您开始时使用它们 public
并且稍后必须更改它们的签名,那么您将面临破坏可能错误使用它们的其他人的代码的风险。