I have read at 1000’s of locations that Static variables are not inherited. But then how this code works fine?
Parent.java
public class Parent { static String str = "Parent"; }
Child.java
public class Child extends Parent { public static void main(String [] args) { System.out.println(Child.str); } }
This code prints “Parent”.
Also read at few locations concept of data hiding.
Parent.java
public class Parent { static String str = "Parent"; }
Child.java
public class Child extends Parent { static String str = "Child"; public static void main(String [] args) { System.out.println(Child.str); } }
Now the output is “Child”.
So does this mean that static variables are inherited but they follow the concept of data-hiding?
Advertisement
Answer
Please have a look into the documentation of oracle: http://docs.oracle.com/javase/specs/jls/se8/html/jls-8.html#d5e12110
Static variables are inherited as long as they’re are not hidden by another static variable with the same identifier.