Sobes.tech
Junior — Middle

Kā atšķiras statiskās metodes objektorientētajā programmēšanā no metodēm, kuras pārdefinē bērnu klasēs?

sobes.tech AI

Atbilde no AI

Java statiskās metodes pieder pašai klasei, nevis instancēm. Tās tiek izsauktas, izmantojot klases nosaukumu, un tās nevar pārrakstīt bērnu klasēs, jo tās nepiedalās polimorfismā.

Atšķirībā no tām, metodes, kuras var pārrakstīt (ne statiskās), pieder objektiem un atbalsta dinamisko polimorfismu. Izsaucot metodi caur bāzes klases atsauci, faktiskā īstenošana tiek noteikta pēc objekta tipa izpildes laikā.

Piemērs:

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

class Child extends Parent {
    static void staticMethod() {
        System.out.println("Child statiskā metode");
    }
    @Override
    void instanceMethod() {
        System.out.println("Child instancijas metode");
    }
}

public class Test {
    public static void main(String[] args) {
        Parent p = new Child();
        p.staticMethod();      // Izdrukās: Parent statiskā metode
        p.instanceMethod();    // Izdrukās: Child instancijas metode
    }
}

Šeit, statiskā metode tiek izsaukta pēc atsauces tipa (Parent), bet nestatiskā — pēc objekta tipa (Child).