Junior — Middle
Ako sa líšia statické metódy v objektovo orientovanom programovaní od metód, ktoré sa prepíšu v podtriedach?
sobes.tech AI
Odpoveď od AI
Statické metódy v Jave patria samotnej triede, nie inštanciám. Sú volané cez názov triedy a nemôžu byť prepísané v podtriedach, pretože sa nezúčastňujú polymorfizmu.
Na rozdiel od nich, metódy, ktoré je možné prepísať (ne statické), patria objektom a podporujú dynamický polymorfizmus. Pri volaní metódy cez odkaz na základnú triedu je skutočná implementácia určená typom objektu počas behu.
Príklad:
class Parent {
static void staticMethod() {
System.out.println("Statická metóda rodiča");
}
void instanceMethod() {
System.out.println("Metóda inštancie rodiča");
}
}
class Child extends Parent {
static void staticMethod() {
System.out.println("Statická metóda dieťaťa");
}
@Override
void instanceMethod() {
System.out.println("Metóda inštancie dieťaťa");
}
}
public class Test {
public static void main(String[] args) {
Parent p = new Child();
p.staticMethod(); // Výstup: Statická metóda rodiča
p.instanceMethod(); // Výstup: Metóda inštancie dieťaťa
}
}
Tu je statická metóda volaná na základe typu referencie (Parent), a nestatická na základe typu objektu (Child).