Sobes.tech
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.