Junior — Middle
Miben különböznek az objektumorientált programozásban a statikus metódusok azoktól a metódusoktól, amelyeket az alosztályok felülírnak?
sobes.tech MI
Válasz az MI-től
A Java-ban a statikus metódusok a saját osztályukhoz tartoznak, nem az példányokhoz. Az osztály neve alapján hívják őket, és nem írhatók felül az alosztályokban, mivel nem vesznek részt a polimorfizmusban.
Ezzel szemben, a felülírható (nem statikus) metódusok az objektumokhoz tartoznak, és támogatják a dinamikus polimorfizmust. Egy alap osztályra mutató hivatkozással hívva, a tényleges végrehajtás az objektum típusától függ futásidőben.
Példa:
class Parent {
static void staticMethod() {
System.out.println("Parent statikus metódus");
}
void instanceMethod() {
System.out.println("Parent példány metódus");
}
}
class Child extends Parent {
static void staticMethod() {
System.out.println("Child statikus metódus");
}
@Override
void instanceMethod() {
System.out.println("Child példány metódus");
}
}
public class Test {
public static void main(String[] args) {
Parent p = new Child();
p.staticMethod(); // Kimenet: Parent statikus metódus
p.instanceMethod(); // Kimenet: Child példány metódus
}
}
Ebben az esetben, a statikus metódus a referencia típusával (Parent) hívódik, míg a nem statikus a objektum típusával (Child).