Sobes.tech
Middle

Lze přepsat statické metody v Javě?

sobes.tech AI

Odpověď od AI

Ne, v Javě nelze přepsat statické metody. Statické metody patří třídě, nikoliv konkrétnímu objektu. Pokud je zděděna statická metoda se stejnou signaturou jako metoda nadtřídy, nejedná se o přepsání; nazývá se skrytí (method hiding). Volání statické metody je vždy určeno typem odkazu, nikoliv typem objektu.

class Parent {
    public static void staticMethod() {
        System.out.println("Statická metoda v Parent");
    }
}

class Child extends Parent {
    // Toto není přepsání, ale skrytí
    public static void staticMethod() {
        System.out.println("Statická metoda v Child");
    }
}

public class Main {
    public static void main(String[] args) {
        Parent.staticMethod(); // Zavolá statickou metodu Parent
        Child.staticMethod();  // Zavolá statickou metodu Child

        Parent p = new Child();
        // Zavolá statickou metodu Parent, protože typ odkazu je Parent
        p.staticMethod();
    }
}

V tomto příkladu, i když proměnná p odkazuje na objekt Child, volání p.staticMethod() volá statickou metodu třídy Parent. To ukazuje, že statické metody se nezúčastňují polymorfismu při běhu, který je charakteristický pro přepsání.