Junior — Middle
Meg lehet változtatni egy statikus metódus megvalósítását egy alosztályban, felülírva azt?
sobes.tech MI
Válasz az MI-től
Java-ban a statikus metódusokat nem lehet felülírni alkosztályban, mivel azok magához a osztályhoz tartoznak, nem az objektumhoz. Ha egy alosztályban ugyanazzal a szignatúrával deklarálunk egy metódust, az nem felülírás, hanem metódus elrejtése (method hiding).
Statikus metódus hívásakor a hívás osztályának megfelelő metódus kerül meghívásra, nem az objektumé.
Példa:
class Parent {
static void staticMethod() {
System.out.println("Parent statikus metódus");
}
}
class Child extends Parent {
static void staticMethod() {
System.out.println("Child statikus metódus");
}
}
public class Test {
public static void main(String[] args) {
Parent p = new Child();
p.staticMethod(); // "Parent statikus metódus" kiírása
Child.staticMethod(); // "Child statikus metódus" kiírása
}
}
Ezért a statikus metódusok nem polimorfikusak, és nem írhatók felül.