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í.