A
无法访问B
中的私有变量,这是B
和C
之间的唯一区别吗?
C.java
public class C {
public static class A extends C {}
}
B.java
public class B extends C {}
编辑:我不是在问静态类和内部类之间的区别。 A
是一个静态嵌套类,而B
是一个顶级类,恰好具有与A
相同的父类
答案 0 :(得分:0)
基本上,是的,这是唯一的区别。静态成员在所有意图和目的上均被视为与其所处事物无关(无论静态事物是方法,字段还是内部类型)。 Java的命名空间系统取决于类型。否则无法引用其他东西。
“私有”很复杂,但是,在几乎所有情况下,您都可以认为“私有”是指:同一源文件中的任何内容都可以看到它,而其他任何文件都看不到。
因此,是的,在您的“ A”示例中,您可以触摸C的私有标记的方法,字段和其他内部类型,而在您的“ B”示例中,您不能。但这不是真的因为内在类/静态,是因为在“ A”示例中,所有内容都在同一实际的.java文件中,而在B示例中,则不是。