Methode-overriding is een OOP-mechanisme waarbij een subklasse een eigen implementatie van een methode geeft die al is gedefinieerd in de superklasse. De methode in de subklasse moet een gelijkwaardige naam, parameters en returntype hebben (of een subtype daarvan zijn).
Belangrijke regels:
@Override helpt bij het opsporen van fouten tijdens de compilatietijd.Voorbeeld:
class Animal { public void sound() { System.out.println("Some sound"); } } class Dog extends Animal { @Override public void sound() { System.out.println("Woof"); } }
Vraag: "Kun je een static methode in Java overriden?"
Antwoord: Nee, static methoden kunnen niet worden overriden. Ze worden verborgen (method hiding). Als je een static methode met dezelfde handtekening in de subklasse declareert, vindt er een verberging plaats, geen overriding.
Voorbeeld:
class A { static void print() { System.out.println("A"); } } class B extends A { static void print() { System.out.println("B"); } } A obj = new B(); obj.print(); // print "A"
Verhaal
In een project probeerde een van de ontwikkelaars een static-methode te "overriden" in de afgeleide klasse, in de verwachting dat de versie uit de subklasse werd aangeroepen via een referentie van de superklasse. Dit leidde tot onverwachte resultaten: de methode van de superklasse werd aangeroepen, wat resulteerde in een onjuiste werking van het programma.
Verhaal
Het is belangrijk om de annotatie
@Overridete gebruiken. In een project maakte een ontwikkelaar een fout in de naam van de methode tijdens het overriden, en zonder de annotatie gaf de compiler geen foutmelding. Hierdoor werd de methode van de basis klasse (standaard) aangeroepen via de erfelijkheidsstructuur, wat leidde tot onjuiste logica in de bedrijfsprocessen.
Verhaal
Het overschrijven van checked-excepties: de ontwikkelaar voegde een nieuwe checked-exceptie toe die werd gegooid in de overschreven methode, welke niet was opgegeven in de oorspronkelijke handtekening. De code compileerde met een fout en het was nodig om de architectuur te veranderen, omdat dit de regel voor het overriden van excepties schond.