扩展父级的静态嵌套类与也扩展该父级的顶级类之间的区别

时间:2019-01-07 23:11:21

标签: java

A无法访问B中的私有变量,这是BC之间的唯一区别吗?

C.java

public class C {
    public static class A extends C {}
}

B.java

public class B extends C {}

编辑:我不是在问静态类和内部类之间的区别。 A是一个静态嵌套类,而B是一个顶级类,恰好具有与A相同的父类

1 个答案:

答案 0 :(得分:0)

基本上,是的,这是唯一的区别。静态成员在所有意图和目的上均被视为与其所处事物无关(无论静态事物是方法,字段还是内部类型)。 Java的命名空间系统取决于类型。否则无法引用其他东西。

“私有”很复杂,但是,在几乎所有情况下,您都可以认为“私有”是指:同一源文件中的任何内容都可以看到它,而其他任何文件都看不到。

因此,是的,在您的“ A”示例中,您可以触摸C的私有标记的方法,字段和其他内部类型,而在您的“ B”示例中,您不能。但这不是真的因为内在类/静态,是因为在“ A”示例中,所有内容都在同一实际的.java文件中,而在B示例中,则不是。