Java @Override Annotation

1. Übersicht

In diesem kurzen Tutorial sehen wir uns an, wie die Annotation @Override verwendet wird .

2. @ Override Annotation

In einer Unterklasse können wir Instanzmethoden überschreiben oder überladen. Überschreiben zeigt an, dass die Unterklasse das geerbte Verhalten ersetzt. Überladen ist, wenn eine Unterklasse neues Verhalten hinzufügt.

Manchmal werden wir versehentlich überladen, wenn wir tatsächlich vorhatten, sie zu überschreiben. Es ist leicht, diesen Fehler in Java zu machen:

public class Machine { public boolean equals(Machine obj) { return true; } @Test public void whenTwoDifferentMachines_thenReturnTrue() { Object first = new Machine(); Object second = new Machine(); assertTrue(first.equals(second)); } }

Überraschenderweise schlägt der obige Test fehl. Dies liegt daran, dass diese Methode equals Object # equals überlädt und nicht überschreibt.

Wir können die Annotation @Override für geerbte Methoden verwenden, um uns vor diesem Fehler zu schützen.

In diesem Beispiel können wir die Annotation @Override über der Methode equals hinzufügen :

@Override public boolean equals(Machine obj) { return true; }

An diesem Punkt wird der Compiler einen Fehler auslösen und uns darüber informieren, dass wir nicht die gleichen Werte überschreiben, wie wir denken.

Dann können wir unseren Fehler korrigieren:

@Override public boolean equals(Object obj) { return true; }

Aufgrund der Leichtigkeit einer versehentlichen Überladung wird häufig empfohlen, die Annotation @Override für alle geerbten Methoden zu verwenden.

3. Fazit

In diesem Handbuch haben wir gesehen, wie die Annotation @Override in Java funktioniert.

Den vollständigen Quellcode für die Beispiele finden Sie auf GitHub.