Sobes.tech
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.