【问题标题】:Java: protected or public access for library methods that I intend to override only?Java:我打算只覆盖的库方法的受保护或公共访问?
【发布时间】:2015-03-06 23:50:11
【问题描述】:

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

【问题讨论】:

  • 我认为一般建议是使用protected。如果有人希望它公开,他也可以将其公开,或者只是从同一个包中使用它。

标签: java methods access-modifiers


【解决方案1】:

安全永远不是手头的问题,因为反射可以绕过包访问。 'protected' 是一种与人类交流的方式,即如果有人从类或其子类外部调用该方法,则该类并非旨在以合理的方式运行。

【讨论】:

    【解决方案2】:

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

    【讨论】:

    • “如果您以 pubic 和 […] 开头”请使用 public,而不是 pubic。 ;)
    • @MartinThorsenRanang 就拼写错误而言,这绝对是最令人尴尬的问题之一。感谢您指出了这一点。已编辑和修复。
    猜你喜欢
    • 2012-01-26
    • 2019-02-13
    • 1970-01-01
    • 2011-08-04
    • 2018-03-28
    • 2013-07-01
    • 2018-10-02
    • 2016-12-26
    相关资源
    最近更新 更多