Java - 包私有类内的方法可访问性?

发布于 08-02 19:58 字数 100 浏览 10 评论 0原文

如果我有一个包私有的java类(用“类”声明,而不是“公共类”),那么里面的方法声明为公共或受保护或包私有实际上没有区别,对吗?那么我应该使用哪个,或者什么时候应该使用哪个?我有点困惑。

If I have a java class which is package-private (declared with "class", not "public class"), there is really no difference if the methods inside are declared public or protected or package-private, right? So which should I use, or when should I use which? I'm a bit confused.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

原谅我要高飞2024-08-09 19:58:01

如果我有一个包私有的java类(用“类”声明,而不是“公共类”),那么里面的方法声明为公共或受保护或包私有实际上没有区别,对吗?< /p>

好吧,也许不会立即。但是,如果您随后(或将来)声明一个从包私有类继承的“受保护”或“公共”类,则原始类成员的可见性确实很重要。

正如 @kmccoy 指出的,将类声明为 Final 消除了子类的可能性。

但这实际上只是装饰门面。如果您随后决定确实需要创建子类,则只需删除 final ...然后您就回到了访问修饰符的选择确实很重要的情况。

IMO,底线是你应该选择最合适的修饰符......即使现在没有必要。如果不出意外,您选择的修饰符应该记录您对抽象边界所在位置的意图。

If I have a java class which is package-private (declared with "class", not "public class"), there is really no difference if the methods inside are declared public or protected or package-private, right?

Well maybe not immediately. But if you then (or in the future) declare a 'protected' or 'public' class that inherits from the package-private class, then the visibility of the members of the original class do matter.

As @kmccoy points out, declaring the class as final removes the possibility of subclasses.

But this is really only window-dressing. If you then decide that you really need to create subclasses, you simply remove the final ... and then you are back in the situation where the choice of access modifiers does matter.

IMO, the bottom line is that you should pick the most appropriate modifiers ... even if it is not necessary right now. If nothing else, your choice of modifiers should document your intent as to where the abstraction boundaries lie.

葮薆情2024-08-09 19:58:01

包类中的公共方法对于同一包中的类是公共的。但是,同一包中的类无法访问私有方法。

Public methods inside a package class are public to classes in the same package. But, private methods will not be accessible by classes in the same package.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文