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.