Sobes.tech
Middle

Je možné prepísať statické metódy v Jave?

sobes.tech AI

Odpoveď od AI

Nie, v Jave nie je možné prepísať statické metódy. Statické metódy patria k triede, nie k konkrétnemu inštancii objektu. Keď sa dedí statická metóda so rovnakou signatúrou ako v nadtriede, nejde o prepisovanie; nazýva sa skrytie (method hiding). Volanie statickej metódy je vždy určené typom referencie, nie typom objektu.

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

class Child extends Parent {
    // Toto nie je prepisovanie, ale skrytie
    public static void staticMethod() {
        System.out.println("Statická metóda v Child");
    }
}

public class Main {
    public static void main(String[] args) {
        Parent.staticMethod(); // Volá statickú metódu Parent
        Child.staticMethod();  // Volá statickú metódu Child

        Parent p = new Child();
        // Volá statickú metódu Parent, pretože typ referencie je Parent
        p.staticMethod();
    }
}

V tomto príklade, aj keď premenná p odkazuje na objekt Child, volanie p.staticMethod() volá statickú metódu triedy Parent. To ukazuje, že statické metódy sa nezúčastňujú na behovom polymorfizme, ktorý je charakteristický pre prepisovanie.