Sobes.tech
Middle
242

Vai Java var pārrakstīt statiskās metodes?

Atbilde no AI

sobes.tech AI

Nē, Java nav iespējams pārrakstīt statiskās metodes. Statiskās metodes pieder klasei, nevis konkrētam objekta eksemplāram. Kad manto statisku metodi ar tādu pašu parakstu kā superklases statiska metode, tas nav pārrakstīšana; tas tiek saukts par slēpšanu (method hiding). Statiskās metodes izsaukums vienmēr ir atkarīgs no atsauces tipa, nevis no objekta tipa.

class Parent {
    public static void staticMethod() {
        System.out.println("Parent statiskā metode");
    }
}

class Child extends Parent {
    // Tas nav pārrakstīšana, bet slēpšana
    public static void staticMethod() {
        System.out.println("Child statiskā metode");
    }
}

public class Main {
    public static void main(String[] args) {
        Parent.staticMethod(); // Izsauc Parent statisko metodi
        Child.staticMethod();  // Izsauc Child statisko metodi

        Parent p = new Child();
        // Izsauc Parent statisko metodi, jo atsauces tips ir Parent
        p.staticMethod();
    }
}

Šajā piemērā, lai gan mainīgais p norāda uz Child objektu, p.staticMethod() izsaukums izsauc Parent klases statisko metodi. Tas rāda, ka statiskās metodes nepiedalās izpildes laikā notiekošajā polimorfismā, kas raksturīgs pārrakstīšanai.