Open In App

Shadowing of static functions in Java

Improve
Improve
Like Article
Like
Save
Share
Report

In Java, if the name of a derived class static function is the same as a base class static function then the base class static function shadows (or conceals) the derived class static function. For example, the following Java code prints “A.fun()” 
Note: Static method is a class property, so if a static method is called from a class name or object having a class container then the method of that class is called not the object’s method. 
 

Java




// file name: Main.java
 
// Parent class
class A {
    static void fun() { System.out.println("A.fun()"); }
}
 
// B is inheriting A
// Child class
class B extends A {
    static void fun() { System.out.println("B.fun()"); }
}
 
// Driver Method
public class Main {
    public static void main(String args[])
    {
        A a = new B();
        a.fun(); // prints A.fun();
 
        // B a = new B();
        // a.fun(); // prints B.fun()
 
        // the variable type decides the method
        // being invoked, not the assigned object type
    }
}


Output

A.fun()

Note: If we make both A.fun() and B.fun() as non-static then the above program would print “B.fun()”. While both methods are static types, the variable type decides the method being invoked, not the assigned object type

 


Last Updated : 19 Feb, 2021
Like Article
Save Article
Previous
Next
Share your thoughts in the comments
Similar Reads