Sobes.tech
Junior — Middle

Miben különböznek az objektumorientált programozásban a statikus metódusok azoktól a metódusoktól, amelyeket az alosztályok felülírnak?

sobes.tech MI

Válasz az MI-től

A Java-ban a statikus metódusok a saját osztályukhoz tartoznak, nem az példányokhoz. Az osztály neve alapján hívják őket, és nem írhatók felül az alosztályokban, mivel nem vesznek részt a polimorfizmusban.

Ezzel szemben, a felülírható (nem statikus) metódusok az objektumokhoz tartoznak, és támogatják a dinamikus polimorfizmust. Egy alap osztályra mutató hivatkozással hívva, a tényleges végrehajtás az objektum típusától függ futásidőben.

Példa:

class Parent {
    static void staticMethod() {
        System.out.println("Parent statikus metódus");
    }
    void instanceMethod() {
        System.out.println("Parent példány metódus");
    }
}

class Child extends Parent {
    static void staticMethod() {
        System.out.println("Child statikus metódus");
    }
    @Override
    void instanceMethod() {
        System.out.println("Child példány metódus");
    }
}

public class Test {
    public static void main(String[] args) {
        Parent p = new Child();
        p.staticMethod();      // Kimenet: Parent statikus metódus
        p.instanceMethod();    // Kimenet: Child példány metódus
    }
}

Ebben az esetben, a statikus metódus a referencia típusával (Parent) hívódik, míg a nem statikus a objektum típusával (Child).