Junior — Middle
V čem se liší statické metody v objektově orientovaném programování od metod, které jsou přepisovány v odvozených třídách?
sobes.tech AI
Odpověď od AI
Statické metody v jazyce Java patří samotné třídě, nikoli instancím. Jsou volány přes název třídy a nemohou být přepsány v podtřídách, protože se nezúčastňují polymorfismu.
Na rozdíl od nich, metody, které lze přepsat (ne statické), patří objektům a podporují dynamický polymorfismus. Při volání metody přes odkaz na základní třídu je skutečná implementace určena typem objektu za běhu.
Příklad:
class Parent {
static void staticMethod() {
System.out.println("Statická metoda rodiče");
}
void instanceMethod() {
System.out.println("Metoda instance rodiče");
}
}
class Child extends Parent {
static void staticMethod() {
System.out.println("Statická metoda dítěte");
}
@Override
void instanceMethod() {
System.out.println("Metoda instance dítěte");
}
}
public class Test {
public static void main(String[] args) {
Parent p = new Child();
p.staticMethod(); // Výstup: Statická metoda rodiče
p.instanceMethod(); // Výstup: Metoda instance dítěte
}
}
Zde je statická metoda volána podle typu reference (Parent), a nestatická podle typu objektu (Child).