私有的嵌套 class(内部或静态)是否可以具有 public 访问的方法?
Does nested class (inner or static) that is private may has method with public acesses?
我正在读一本 java 初学者的书。我看到一个示例,其中 private nested inner class 是使用 public 方法声明的。有人可以解释一下含义吗?我如何决定私有嵌套 class (static/inner) 方法应该是私有的还是 public?
私有嵌套 class 仅在其封闭 class 内部可见,并且封闭 class(和其他嵌套 classes)可以访问其私有方法。
因此,将它们的方法设为 public 或私有对编译器来说并不重要,当然除非嵌套 class 扩展基 class 或实现接口,因此有有其覆盖方法public。制作方法 public 也可能是必要的,因为它们是使用反射调用的(例如,如果它的实例被序列化为 JSON 或 XML,或者如果它们在 JSP).
我倾向于使用相同的规则来选择制作 public 和私有的内容,就好像 class 没有嵌套一样。这让(对我来说)更清楚一些私有方法不是它的 public API 的一部分,因此不应该在嵌套的 class 本身之外使用。如果我将嵌套 class 重构为顶级 class,我不需要更改任何内容。
我正在读一本 java 初学者的书。我看到一个示例,其中 private nested inner class 是使用 public 方法声明的。有人可以解释一下含义吗?我如何决定私有嵌套 class (static/inner) 方法应该是私有的还是 public?
私有嵌套 class 仅在其封闭 class 内部可见,并且封闭 class(和其他嵌套 classes)可以访问其私有方法。
因此,将它们的方法设为 public 或私有对编译器来说并不重要,当然除非嵌套 class 扩展基 class 或实现接口,因此有有其覆盖方法public。制作方法 public 也可能是必要的,因为它们是使用反射调用的(例如,如果它的实例被序列化为 JSON 或 XML,或者如果它们在 JSP).
我倾向于使用相同的规则来选择制作 public 和私有的内容,就好像 class 没有嵌套一样。这让(对我来说)更清楚一些私有方法不是它的 public API 的一部分,因此不应该在嵌套的 class 本身之外使用。如果我将嵌套 class 重构为顶级 class,我不需要更改任何内容。