๐น Java: Methods Overriding vs. Hiding
๐ Can we override a static method in Java?
No โ โ static methods cannot be overridden, they are hidden.
โก Example
class Parent {
static void staticMethod() { System.out.println("Parent static"); }
void instanceMethod() { System.out.println("Parent instance"); }
}
class Child extends Parent {
static void staticMethod() { System.out.println("Child static"); } // hiding
@Override
void instanceMethod() { System.out.println("Child instance"); } // overriding
}
public class Test {
public static void main(String[] args) {
Parent ref = new Child();
ref.staticMethod(); // Parent static
ref.instanceMethod(); // Child instance
}
}
โ
Key Takeaway
Static methods โ hidden (compile-time binding, decided by reference type).
Instance methods โ overridden (runtime polymorphism, decided by object type).
๐ Output:
Parent static
Child instance
๐ Key Takeaway
Static methods are resolved at compile-time based on reference type (hiding), while instance methods are resolved at runtime based on actual object type (overriding), enabling true polymorphism.