java - 私有(private)的嵌套类(内部或静态)是否可以具有可公共(public)访问的方法?

标签 java nested inner-classes access-modifiers static-classes

我正在读一本针对 Java 初学者的书。我看到一个例子,私有(private)嵌套内部类是用公共(public)方法声明的。有人可以解释一下它的含义以及我如何决定私有(private)嵌套类(静态/内部)方法应该是私有(private)的还是公共(public)的?

最佳答案

私有(private)嵌套类仅在其封闭类内部可见,并且封闭类(和其他嵌套类)可以访问其私有(private)方法。

因此,将它们的方法设为公共(public)或私有(private)对编译器来说并不重要,当然,除非嵌套类扩展基类或实现接口(interface),因此必须将其重写方法公开。使方法公开也可能是使用反射调用它们的必要条件(例如,如果其实例序列化为 JSON 或 XML,或者如果在 JSP 中访问它们)。

我倾向于使用与未嵌套类相同的规则来选择公开和私有(private)的内容。这让(对我来说)更清楚的是,一些私有(private)方法不是其公共(public) API 的一部分,因此不应该在嵌套类本身之外使用。如果我将嵌套类重构为顶级类,我不需要更改任何内容。

关于java - 私有(private)的嵌套类(内部或静态)是否可以具有可公共(public)访问的方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59227329/

相关文章:

java - 如何使您的自定义 View 可聚焦?

ios - 无意的类嵌套 - 代码运行 10 次太频繁 (Swift)

c++ - 从内部类中的方法调用包含类的方法

Java - 从处理程序引用外部类

c# - 只允许外部类实例化内部类,但内部类应该是公共(public)的

java - "Spring transaction"和 "Hibernate transaction"有什么区别

java - Java中使用正则表达式获取字符串的子字符串

java - Gradle 多项目构建 : How to include JAR of a WAR project into another WAR without creating pseudo projects

c - 宏如何输出双引号

Django API 框架 - 嵌套模型 View