首页 > 解决方案 > 扩展父级的静态嵌套类与也扩展该父级的顶级类之间的区别

问题描述

唯一的区别是A和无法访问私有变量B的事实吗?BC

C.java

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

B.java

public class B extends C {}

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

标签: java

解决方案


基本上,是的,这是唯一的区别。静态成员的所有意图和目的都被视为独立于它们所在的事物(无论静态事物是方法、字段还是内部类型)。Java 的命名空间系统依赖于类型。没有办法以其他方式引用事物。

'private' 很复杂,但是,对于几乎所有情况,您都可以认为'private' 意味着:同一源文件中的任何内容都可以看到它,而其他任何内容都不能。

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


推荐阅读