Sobes.tech
Junior — Middle

Kuidas erinevad objektiorienteeritud programmeerimises statilised meetodid meetoditest, mida alamsüklid üle kirjutavad?

sobes.tech AI

Vastus AI-lt

Java-s statilised meetodid kuuluvad ise klassile, mitte eksemplaridele. Neid kutsutakse klassi nime kaudu ning neid ei saa alamsklassides üle kirjutada, kuna nad ei osale polümorfismis.

Erinevalt neist, meetodid, mida saab üle kirjutada (mitte statilised), kuuluvad objektidele ja toetavad dünaamilist polümorfismi. Kui meetod kutsutakse põhiklassi viitest, määratakse tegelik rakendus objekti tüübi järgi jooksuaegsel.

Näide:

class Parent {
    static void staticMethod() {
        System.out.println("Parenti statiline meetod");
    }
    void instanceMethod() {
        System.out.println("Parenti näidismeetod");
    }
}

class Child extends Parent {
    static void staticMethod() {
        System.out.println("Childi statiline meetod");
    }
    @Override
    void instanceMethod() {
        System.out.println("Childi näidismeetod");
    }
}

public class Test {
    public static void main(String[] args) {
        Parent p = new Child();
        p.staticMethod();      // Väljund: Parenti statiline meetod
        p.instanceMethod();    // Väljund: Childi näidismeetod
    }
}

Siin, statiline meetod kutsutakse viite tüübi (Parent) järgi, ning mitte-staatiline objekti tüübi (Child) järgi.