Junior — Middle
Може ли да обявите статичен метод на клас като финален, за да предотвратите неговото презаписване?
sobes.tech AI
Отговор от AI
В Java статичните методи не могат да бъдат презаписвани в наследяващите класове, защото принадлежат на самия клас, а не на екземпляра. Затова обявяването на статичен метод като final няма смисъл и синтактично не е разрешено.
Ключовата дума final обикновено се използва за методи на екземпляра, за да се забрани тяхното презаписване в подкласове. За статичните методи, презаписването е невъзможно, но може да се скрие метод с същото име в подклас (това се нарича method hiding).
Пример:
class Parent {
static void staticMethod() {
System.out.println("Статичен метод на Parent");
}
}
class Child extends Parent {
static void staticMethod() {
System.out.println("Статичен метод на Child");
}
}
Тук Child скрива метода на Parent, но това не е презаписване. За static методи не може да се обяви final.