Java 中静态函数的阴影

2024年9月10日 | 阅读 2 分钟

Java 中静态方法的隐藏是指在同一作用域内存在两个同名静态方法。第一个方法被称为第二个方法所隐藏。当调用时,第二个方法将优先于第一个方法。

当通过类名或具有类容器的对象调用静态方法时,调用的是类的方法,而不是对象的。方法。

示例 1

文件名: SubClass.java

输出

It is the static method in SuperClass
It is the static method in SubClass

示例 2

文件名: StaticFunction.java

输出

Father

解释

在方法重载中,如果超类和子类具有相同签名的同名方法,那么子类对象的这两种方法都可用。执行哪种方法取决于对象引用的类型。

对于静态方法,由于它们不属于任何实例,因此通过类名访问它们。如果超类和子类具有相同签名的静态方法,则子类方法将隐藏超类方法。这意味着子类方法将被执行,而不是超类方法,即使对象引用是 SuperClass 类型。

由于静态方法在编译时解析,因此无法使用静态方法进行覆盖。