Middle
Могат ли да се презапишат статичните методи в Java?
sobes.tech AI
Отговор от AI
Не, в Java не може да се презапише статични методи. Статичните методи принадлежат към класа, а не към конкретен екземпляр от обекта. Когато наследяваме статичен метод със същата сигнатура като този в суперкласа, това не е презаписване; това се нарича скриване (method hiding). Вика на статичен метод винаги се определя от типа на референцията, а не от типа на обекта.
class Parent {
public static void staticMethod() {
System.out.println("Статичен метод в Parent");
}
}
class Child extends Parent {
// Това не е презаписване, а скриване
public static void staticMethod() {
System.out.println("Статичен метод в Child");
}
}
public class Main {
public static void main(String[] args) {
Parent.staticMethod(); // Вика статичния метод на Parent
Child.staticMethod(); // Вика статичния метод на Child
Parent p = new Child();
// Вика статичния метод на Parent, защото типът на референцията е Parent
p.staticMethod();
}
}
В този пример, въпреки че променливата p се отнася към обект Child, извикването p.staticMethod() извиква статичния метод на класа Parent. Това показва, че статичните методи не участват в изпълнителния полиморфизъм, който е характерен за презаписването.