Java 中可以重载或覆盖静态方法吗?


如果一个类有多个名称相同但参数不同的函数,则称为方法重载。如果子类提供了其父类已提供的某个方法的具体实现,则称为方法覆盖。

方法重载提高了程序的可读性。方法覆盖提供了其超类参数在重载的情况下必须不同,在覆盖的情况下必须相同的方法的具体实现。

现在考虑静态方法的情况,那么静态方法在重载和覆盖方面有以下规则。

  • 可以通过另一个静态方法重载。

  • 不能被子类中的另一个静态方法覆盖。其背后的原因是子类只隐藏了静态方法,而不是覆盖它。

示例

以下示例演示了这一点。

Open Compiler
class SuperClass { public static void display() { System.out.println("SuperClass.display()"); } //Method overloading of static method public static void display(int a) { System.out.println("SuperClass.display(int): " + a); } } class SubClass extends SuperClass { //Not method overriding but hiding public static void display() { System.out.println("SubClass.display()"); } } public class Tester { public static void main(String[] args) { SuperClass object = new SubClass(); //SuperClass display method is called //although object is of SubClass. object.display(); object.display(1); } }

输出

SuperClass.display()
SuperClass.display(int): 1

Learn Java in-depth with real-world projects through our Java certification course. Enroll and become a certified expert to boost your career.

注意

  • 静态方法在编译时解析,不能被子类覆盖。实例方法在运行时解析,可以被覆盖。

  • 静态方法可以重载。

更新于: 2023-12-01

4K+ 浏览量

启动你的 职业生涯

通过完成课程获得认证

开始学习
广告