Sobes.tech
Junior — Middle

Wie unterscheiden sich statische Methoden in der objektorientierten Programmierung von Methoden, die in Unterklassen überschrieben werden?

sobes.tech KI

Antwort von AI

Statische Methoden in Java gehören zur Klasse selbst und nicht zu Instanzen. Sie werden über den Klassennamen aufgerufen und können in Unterklassen nicht überschrieben werden, da sie nicht am Polymorphismus teilnehmen.

Im Gegensatz dazu gehören Methoden, die überschrieben werden können (nicht statisch), zu den Objekten und unterstützen den dynamischen Polymorphismus. Beim Aufruf einer Methode über eine Referenz auf die Basisklasse wird die tatsächliche Implementierung durch den Objekttyp zur Laufzeit bestimmt.

Beispiel:

class Parent {
    static void staticMethod() {
        System.out.println("Parent statische Methode");
    }
    void instanceMethod() {
        System.out.println("Parent Instanzmethode");
    }
}

class Child extends Parent {
    static void staticMethod() {
        System.out.println("Child statische Methode");
    }
    @Override
    void instanceMethod() {
        System.out.println("Child Instanzmethode");
    }
}

public class Test {
    public static void main(String[] args) {
        Parent p = new Child();
        p.staticMethod();      // Gibt aus: Parent statische Methode
        p.instanceMethod();    // Gibt aus: Child Instanzmethode
    }
}

Hier wird die statische Methode anhand des Referenztyps (Parent) aufgerufen, während die nicht-statische Methode anhand des Objekttyps (Child) aufgerufen wird.