能被子类继承,但非传统继承——依赖构造函数的__proto__链而非原型链;es6 extends自动设置child.__proto__ = parent,使子类可直接调用父类public静态方法;同名方法为隐藏而非重写,调用取决于引用类名;private static方法不可访问。

能被子类继承,但继承方式和实例方法不同——它依赖的是构造函数的 __proto__ 链,而不是原型链。
子类确实可以调用父类的静态方法
只要父类静态方法是 public(即非 private),子类无需任何额外操作就能直接通过类名调用:
-
Parent.staticMethod()可执行 -
Child.staticMethod()同样可执行(前提是Child没定义同名静态方法)
这是因为 ES6 的 extends 会自动设置 Child.__proto__ = Parent,使子类构造函数能沿 __proto__ 链向上查找静态成员。
同名静态方法不是重写,而是隐藏
如果子类定义了签名相同的静态方法,它不会覆盖父类方法,而是“隐藏”父类版本:
-
Parent.staticMethod()→ 调用父类版本 -
Child.staticMethod()→ 调用子类版本 -
const c = new Child(); c.constructor.staticMethod()→ 实际取决于c.constructor是哪个类
注意:调用结果由**引用的类名或构造器类型**决定,与实例的实际类型无关,这和实例方法的多态完全不同。
Java Maven 项目审查工作流的通用输入处理。当 Java Maven 项目以 ZIP压缩包或 GitLab 仓库 URL 形式提供且需要...时使用。
private static 方法不可访问
父类中用 private static 声明的方法(ES2022+)对子类完全不可见:
- 子类既不能调用,也不能隐藏它
- 编译时报错,不进入继承链查找流程
这进一步说明:所谓“静态继承”,本质是访问权限 + 构造函数链的组合结果,不是代码复制。
不依赖 super,但可用 super 访问父类静态成员
在子类的静态方法内部,super 指向父类本身(不是其原型),可用于明确调用父类静态方法:
static doSomething() { return super.staticMethod(); }- 这比硬编码
Parent.staticMethod()更灵活,支持多层继承场景
不过 super 在静态上下文中只能用于静态方法内,不能在普通方法或构造函数中这样用。
Java免费学习笔记:立即使用
解锁 Java 大师之旅:从入门到精通的终极指南










