Почему статический метод родительского класса вызывается, когда подкласс уже переопределил его?
Меня смущает поведение статического метода, когда он переопределяется в подклассе.
Ниже приведен код:
public class SuperClass {
public static void staticMethod() {
System.out.println("SuperClass: inside staticMethod");
}
}
public class SubClass extends SuperClass {
//overriding the static method
public static void staticMethod() {
System.out.println("SubClass: inside staticMethod");
}
}
public class CheckClass {
public static void main(String[] args) {
SuperClass superClassWithSuperCons = new SuperClass();
SuperClass superClassWithSubCons = new SubClass();
SubClass subClassWithSubCons = new SubClass();
superClassWithSuperCons.staticMethod();
superClassWithSubCons.staticMethod();
subClassWithSubCons.staticMethod();
}
}
Below is the output which we are getting :
1) SuperClass: inside staticMethod
2) SuperClass: inside staticMethod
3) SubClass: inside staticMethod
Почему статический метод суперкласса вызывается здесь во втором случае?
Если метод не является статическим, то в соответствии с полиморфизмом метод подкласса вызывается, когда объект подкласса передается во время выполнения.