java - 扩展父级的静态嵌套类与也扩展该父级的顶级类之间的区别
问题描述
唯一的区别是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
解决方案
基本上,是的,这是唯一的区别。静态成员的所有意图和目的都被视为独立于它们所在的事物(无论静态事物是方法、字段还是内部类型)。Java 的命名空间系统依赖于类型。没有办法以其他方式引用事物。
'private' 很复杂,但是,对于几乎所有情况,您都可以认为'private' 意味着:同一源文件中的任何内容都可以看到它,而其他任何内容都不能。
因此,是的,在您的“A”示例中,您可以触摸 C 的私有标记方法、字段和其他内部类型,而在您的“B”示例中则不能。但这并不是因为内部类/静态性,这仅仅是因为在“A”示例中,所有内容都在同一个实际的 .java 文件中,而在 B 示例中它们不是。
推荐阅读
- multiple-columns - Power Query 无法将选项卡识别为代码中 .txt 文件中的分隔符
- c++ - C++Mutex 和条件变量解锁/同步
- amazon-web-services - 为什么我在 AWS Cognito 服务中看不到用户自定义属性
- virtual-machine - 全屏在 vmware 中不起作用(ubuntu 16.04 LTS)
- mysql - 发布到 IIS 服务器后,带有 MySql 的 ASP.NET Identity 问题
- html - 如何在水平对齐的 ul 中垂直对齐父级及其子级?
- swift - 最大化窗口大小而无需全屏 Xcode macOS
- vue.js - 为什么 setup() 不起作用“无法读取未定义的属性‘用户名’”
- sql - 将 SAS SQL 转换为 Hive SQL
- android - 微调器选择的项目与工具栏标题的样式相同