Middle
245
Ar galima perrašyti statinius metodus Java?
Atsakymas iš AI
sobes.tech AI
Ne, Java nėra leidžiama perrašyti statinius metodus. Statiniai metodai priklauso klasei, o ne konkrečiam objekto egzemplioriui. Kai paveldima statinė metodas su ta pačia signatūra kaip ir superklasės metodas, tai nėra perrašymas; tai vadinama paslėpimu (method hiding). Statinio metodo iškvietimas visada nustatomas pagal nuorodos tipą, o ne objekto tipą.
class Parent {
public static void staticMethod() {
System.out.println("Parent statinis metodas");
}
}
class Child extends Parent {
// Tai nėra perrašymas, o paslėpimas
public static void staticMethod() {
System.out.println("Child statinis metodas");
}
}
public class Main {
public static void main(String[] args) {
Parent.staticMethod(); // Kviesia Parent statinį metodą
Child.staticMethod(); // Kviesia Child statinį metodą
Parent p = new Child();
// Kviesia Parent statinį metodą, nes nuorodos tipas yra Parent
p.staticMethod();
}
}
Šiame pavyzdyje, nors kintamasis p nurodo į Child objektą, p.staticMethod() iškvietimas kviečia Parent klasės statinį metodą. Tai rodo, kad statiniai metodai nedalyvauja vykdymo laiko polimorfizme, kuris būdingas perrašymui.