Sobes.tech
Junior — Middle

Is het mogelijk om een statische methode van een klasse als final te declareren om overschrijving te voorkomen?

sobes.tech AI

Antwoord van AI

In Java kunnen statische methoden niet worden overschreven in afgeleide klassen omdat ze toebehoren aan de klasse zelf, niet aan het exemplaar. Daarom heeft het geen zin om een statische methode als final te declareren en is dit syntactisch niet toegestaan.

Het sleutelwoord final wordt meestal gebruikt voor instantie-methoden om te voorkomen dat ze worden overschreven in subklassen. Voor statische methoden is overschrijven niet mogelijk, maar je kunt een methode met dezelfde naam verbergen in de subklasse (dit wordt method hiding genoemd).

Voorbeeld:

class Parent {
    static void staticMethod() {
        System.out.println("Parent static method");
    }
}

class Child extends Parent {
    static void staticMethod() {
        System.out.println("Child static method");
    }
}

Hier verbergt Child de methode van Parent, maar het is geen overschrijving. Voor static methoden is final niet toegestaan.