Sobes.tech
Middle

Átírhatók-e a statikus metódusok Java-ban?

sobes.tech MI

Válasz az MI-től

Nem, Java-ban nem lehet statikus módszereket felülírni. A statikus módszerek a osztályhoz tartoznak, nem pedig egy adott objektum példányához. Amikor egy statikus módszert öröklünk ugyanazzal a szignatúrával, mint a szuperosztályban, ez nem felülírásnak számít; ez elrejtés (method hiding) néven ismert. A statikus módszer hívása mindig a referencia típusától függ, nem az objektum típusától.

class Parent {
    public static void staticMethod() {
        System.out.println("Parent statikus módszere");
    }
}

class Child extends Parent {
    // Ez nem felülírás, hanem elrejtés
    public static void staticMethod() {
        System.out.println("Child statikus módszere");
    }
}

public class Main {
    public static void main(String[] args) {
        Parent.staticMethod(); // A Parent statikus módszerét hívja
        Child.staticMethod();  // A Child statikus módszerét hívja

        Parent p = new Child();
        // A Parent statikus módszerét hívja, mert a referencia típus Parent
        p.staticMethod();
    }
}

Ebben a példában, bár a p változó egy Child objektumra mutat, a p.staticMethod() hívás a Parent osztály statikus módszerét hívja. Ez mutatja, hogy a statikus módszerek nem vesznek részt a futási időben megvalósuló polimorfizmusban, ami a felülírás jellemzője.