【问题标题】:Is there a way to declare a method "friendly" in Java?有没有办法在 Java 中声明一个“友好”的方法?
【发布时间】:2010-12-22 19:12:49
【问题描述】:

我知道属性可以设置publicfriendlyprivate来指定其可见性。

有没有办法可以声明friendly 方法?我希望它只能从同一包的类的对象中访问。

谢谢你,这里的初学者:(。

【问题讨论】:

    标签: java methods visibility


    【解决方案1】:

    通过不输入可见性修饰符,Java 使用包私有范围

    查看以下article

    编辑:正如 cmets 中所述,没有办法将方法标记为“友好”。但是对于您的需要,package-private 就足够了。

    【讨论】:

    • 虽然,如果我们以 C++ 的方式理解“友好”,那就不完全一样了。
    • 是的,没错——但似乎这个范围就足够了,因为 Sergio 只希望“它只能从同一包的类的对象中访问。”
    【解决方案2】:

    只是不要指定可访问性 - 默认为“包可见”或“默认访问”。不幸的是,没有办法明确地做到这一点。

    注意protected的访问不仅是继承相关的,还包括同一个包中的其他类型。 (这对我来说总是有点奇怪,但没关系。)

    详情请参阅Java Language Specification section 6.6

    【讨论】:

    • 令大多数人意想不到的是,受保护的限制比包/默认少。
    • 我对此感到很惊讶。如果我理解它,即使子类位于不同的包中,从超类继承的类仍然可以访问其受保护的属性。这实际上是有道理的:)
    【解决方案3】:

    这可以通过在方法声明中省略 public/private 来实现。该方法是隐式公开的,但只能在同一个包中访问。

    【讨论】:

      【解决方案4】:

      是的 - 不要放置任何修饰符。简单的

      String myString;

      Here你可以看到每个可见性修饰符的语义。

      【讨论】:

        【解决方案5】:

        什么都不说,默认是包可见性。

        【讨论】:

          【解决方案6】:

          在 Java 中,您具有公共、受保护、包和私有可见性。包可见性也称为默认值,因为您通过省略其他关键字来指定它。

          【讨论】:

            【解决方案7】:

            如果您不指定任何访问修饰符,则该方法将是“package-private”,这听起来像是您想要的。

            【讨论】:

              猜你喜欢
              • 1970-01-01
              • 2015-11-05
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 2013-01-10
              • 1970-01-01
              • 2012-12-13
              相关资源
              最近更新 更多