有没有办法在 Java 中声明一个“友好”的方法?
Posted
技术标签:
【中文标题】有没有办法在 Java 中声明一个“友好”的方法?【英文标题】:Is there a way to declare a method "friendly" in Java? 【发布时间】:2010-12-22 19:12:49 【问题描述】:我知道属性可以设置public
、friendly
或private
来指定其可见性。
有没有办法可以声明friendly
方法?我希望它只能从同一包的类的对象中访问。
谢谢你,这里的初学者:(。
【问题讨论】:
【参考方案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”,这听起来像是您想要的。
【讨论】:
以上是关于有没有办法在 Java 中声明一个“友好”的方法?的主要内容,如果未能解决你的问题,请参考以下文章