0

如果我有一个公共类,调用它ClassA,这需要另一个类,调用它ClassB,并且:1)我的程序中没有其他类需要访问ClassB. 2)ClassB不需要静态访问的状态ClassA

如果这两点成立,是否有关于是否ClassB应该是 a public static class ClassB { inside public class ClassA {或是否ClassB应该是 a class ClassB { outside of 的指导方针ClassA

4

3 回答 3

2

由于它不会在 之外使用ClassA,因此最好是:

private class ClassB {

}
于 2013-10-08T08:34:29.087 回答
2

是否ClassB独立于 做可定义的、有用的工作ClassA?如果它只是ClassA实现的一部分,请将其定义ClassA为私有静态类。如果它具有独立的含义,则将其定义为顶级类,根据其潜在用途的范围具有包或公共访问权限。

于 2013-10-08T08:35:47.127 回答
0

由于 ClassB 不需要静态访问 ClassA 的状态,所以 classB 可以是私有内部类。

非静态嵌套类(内部类)可以访问封闭类的其他成员,即使它们被声明为私有。静态嵌套类无权访问封闭类的其他成员。作为 OuterClass 的成员,嵌套类可以声明为私有、公共或受保护的。(来自javadoc)

于 2013-10-08T08:40:34.017 回答