Middle
Átírhatók-e a statikus metódusok Java-ban?
sobes.tech MI
Válasz az MI-től
Nem, Java-ban nem lehet statikus módszereket felülírni. A statikus módszerek a osztályhoz tartoznak, nem pedig egy adott objektum példányához. Amikor egy statikus módszert öröklünk ugyanazzal a szignatúrával, mint a szuperosztályban, ez nem felülírásnak számít; ez elrejtés (method hiding) néven ismert. A statikus módszer hívása mindig a referencia típusától függ, nem az objektum típusától.
class Parent {
public static void staticMethod() {
System.out.println("Parent statikus módszere");
}
}
class Child extends Parent {
// Ez nem felülírás, hanem elrejtés
public static void staticMethod() {
System.out.println("Child statikus módszere");
}
}
public class Main {
public static void main(String[] args) {
Parent.staticMethod(); // A Parent statikus módszerét hívja
Child.staticMethod(); // A Child statikus módszerét hívja
Parent p = new Child();
// A Parent statikus módszerét hívja, mert a referencia típus Parent
p.staticMethod();
}
}
Ebben a példában, bár a p változó egy Child objektumra mutat, a p.staticMethod() hívás a Parent osztály statikus módszerét hívja. Ez mutatja, hogy a statikus módszerek nem vesznek részt a futási időben megvalósuló polimorfizmusban, ami a felülírás jellemzője.