+ 3
About static method in JAVA
There is a question in playground. Method in child class must be marked as static if it is marked as static in the parent class(method hiding). The answer is TRUE. But in my memory,I learn that static method CAN'T be Override... Could someone help me lift the confusion? ~Thank you~
2 Réponses
+ 6
In order for a method to be "overridden" it must belong to an instance of a class. Static methods belong to the class itself and an instance of the class is not needed in order to call that method. In order to redefine a static method in a child class it must also be static. If you don't make the child classes method static then you are attempting to override it which you cannot do.
public class B extends A {
/*public void sayHello() {
System.out.println("Hello B");
}*/
public static void sayHello() {
System.out.println("Hello B");
}
}
public class A {
public static void sayHello() {
System.out.println("Hello A");
}
}
public class Program {
public static void main(String[] args) {
A.sayHello();
B.sayHello();
//B b = new B(); // create an instance of B
//b.sayHello(); // error can't override static method
}
}
+ 4
How clear you are !!!
~Thank You~