Odpowiedzi:
@Override początkowo nie było w języku. Kiedy trzeba było go dodać, łatwiej było zastosować ogólny mechanizm (adnotacje) niż dodać nowe słowo kluczowe do języka. Dodanie nowego słowa kluczowego jest zawsze niezgodną zmianą, ponieważ może uszkodzić programy, które używają tych słów jako identyfikatora.
W językach, które dodają znacznik przesłonięcia od samego początku, jest to często słowo kluczowe (przykłady to Kotlin i Scala), w Javie kwestia pozostania kompatybilna wstecz ze starszą wersją Java, która nie miała żadnego znacznika przesłonięcia.
default
było już zarezerwowanym słowem kluczowym (używanym w instrukcjach switch) - właśnie dodali dla niego nowe zastosowanie. Istnieje również kilka słów kluczowych, które w tej chwili nic nie robią, ale są zastrzeżone do wykorzystania w przyszłości (const, goto) - patrz JLS §3.9
enum
że dodane słowo kluczowe złamałoby starszy kod. Więcej kluczowych słów kluczowych tutaj: stackoverflow.com/questions/16506411
Nie potrzebujesz adnotacji @Override, aby faktycznie zastąpić zachowanie; Jest to adnotacja, ponieważ po prostu dodaje kontekst kontekstu metody dla kompilatora, nie zmieniając samej metody.
Bez adnotacji możesz chcieć zastąpić funkcjonalność, ale przypadkowo tego nie zrobisz (używając nieco innej sygnatury). Dodanie adnotacji nakazuje kompilatorowi wygenerowanie błędu, jeśli ta metoda w rzeczywistości nie zastępuje zachowania.
Jako taki ma sens jako adnotacja.