Sobes.tech
Middle

Kun je statische methoden overschrijven in Java?

sobes.tech AI

Antwoord van AI

Nee, in Java is het niet mogelijk om statische methoden te overschrijven. Statische methoden behoren tot de klasse, niet tot een specifiek object. Wanneer een statische methode met dezelfde handtekening als die van de superklasse wordt geërfd, wordt dit geen overschrijving genoemd; dit wordt verbergen (method hiding) genoemd. De aanroep van een statische methode wordt altijd bepaald door het type van de referentie, niet door het type van het object.

class Parent {
    public static void staticMethod() {
        System.out.println("Statische methode in Parent");
    }
}

class Child extends Parent {
    // Dit is geen overschrijving, maar verbergen
    public static void staticMethod() {
        System.out.println("Statische methode in Child");
    }
}

public class Main {
    public static void main(String[] args) {
        Parent.staticMethod(); // Roept de statische methode van Parent op
        Child.staticMethod();  // Roept de statische methode van Child op

        Parent p = new Child();
        // Roept de statische methode van Parent op, omdat het referentietype Parent is
        p.staticMethod();
    }
}

In dit voorbeeld, hoewel de variabele p verwijst naar een Child-object, roept de aanroep p.staticMethod() de statische methode van de klasse Parent op. Dit toont aan dat statische methoden niet deelnemen aan het polymorfisme dat kenmerkend is voor overschrijving.