Home  >  Article  >  Java  >  Can Static Methods be Overridden in Java? The Surprising Answer.

Can Static Methods be Overridden in Java? The Surprising Answer.

Barbara Streisand
Barbara StreisandOriginal
2024-10-28 18:04:02411browse

Can Static Methods be Overridden in Java? The Surprising Answer.

Overriding vs. Overloading Static Methods in Java

Static methods are an integral part of object-oriented programming, but their behavior in Java can be somewhat confusing, especially when it comes to overriding and overloading.

Overriding Static Methods

Java does not allow static methods to be overridden in the traditional sense. This is because static methods are bound to the class, not to specific instances of the class. Therefore, when a subclass defines a new static method with the same name as a method in the parent class, it does not override the parent method. Instead, it hides it.

Hiding means that the compiler will always call the static method of the subclass, regardless of the type of the object invoking the method. This is because the method is resolved at compilation time, not at runtime.

Overloading Static Methods

Unlike overriding, overloading is possible with static methods in Java. Overloading refers to the ability to have multiple methods with the same name but different parameter lists. Java allows static methods to be overloaded, just like instance methods.

The following code demonstrates the difference between overriding and overloading static methods:

<code class="java">class Parent {
    public static void method() {
        System.out.println("Parent method");
    }
}

class Child extends Parent {
    // Hides the static method in the parent class
    public static void method() {
        System.out.println("Child method");
    }

    // Overloads the static method in the parent class
    public static void method(int x) {
        System.out.println("Child method with parameter");
    }
}

public class Main {
    public static void main(String[] args) {
        Parent p = new Child();
        p.method(); // Calls the static method in the Child class
        Child.method(); // Also calls the static method in the Child class
        Child.method(10); // Calls the overloaded static method in the Child class
    }
}</code>

Output:

Child method
Child method
Child method with parameter

In the above example, the method() method in the Child class hides the method() method in the Parent class. However, the method(int x) method in the Child class overloads the method() method in the Parent class.

The above is the detailed content of Can Static Methods be Overridden in Java? The Surprising Answer.. For more information, please follow other related articles on the PHP Chinese website!

Statement:
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn