Sobes.tech
Junior — Middle

Meg lehet változtatni egy statikus metódus megvalósítását egy alosztályban, felülírva azt?

sobes.tech MI

Válasz az MI-től

Java-ban a statikus metódusokat nem lehet felülírni alkosztályban, mivel azok magához a osztályhoz tartoznak, nem az objektumhoz. Ha egy alosztályban ugyanazzal a szignatúrával deklarálunk egy metódust, az nem felülírás, hanem metódus elrejtése (method hiding).

Statikus metódus hívásakor a hívás osztályának megfelelő metódus kerül meghívásra, nem az objektumé.

Példa:

class Parent {
    static void staticMethod() {
        System.out.println("Parent statikus metódus");
    }
}

class Child extends Parent {
    static void staticMethod() {
        System.out.println("Child statikus metódus");
    }
}

public class Test {
    public static void main(String[] args) {
        Parent p = new Child();
        p.staticMethod(); // "Parent statikus metódus" kiírása
        Child.staticMethod(); // "Child statikus metódus" kiírása
    }
}

Ezért a statikus metódusok nem polimorfikusak, és nem írhatók felül.