2016-07-12 11 views

Antwort

3

Die Anmerkung wurde nicht zur Sprache hinzugefügt, da die Sprachentwickler ihre Verwendung nicht erzwingen wollten.

Es wurde als optionale Anmerkung für Personen hinzugefügt, die die Funktion möchten, aber es wird nur vom Analysetool erkannt, es ist nicht Teil der Sprache.

+0

Also ... machten sie es optional, weil sie nicht wollten, dass es benötigt wurde? Ich bin mir sicher, dass das nicht so gemeint war, aber das scheint besonders wenig hilfreich zu sein. – KOGI

+1

Es wurde optional gemacht, weil sie es nicht als Teil der Sprache wollten. Dart erfordert nicht, dass Sie etwas schreiben, um eine Methode zu überschreiben. Also wirklich, es ist nicht * optional *, es ist überhaupt nicht * aus der Sprachperspektive. Einige Leute möchten diese Funktion, auch wenn sie nicht in der Sprache vorhanden ist, und sie haben die '@ override'-Annotations- und Analysator-Unterstützung hinzugefügt. Die Annotation sollte sich wirklich in 'package: meta' mit anderen vom Analyzer erkannten Annotationen befinden, anstatt in den Plattformbibliotheken zu sein, und vielleicht werden wir sie schließlich dorthin verschieben. – lrn

3

Von der documentation:

Die Absicht der @Override Notation ist es, Situationen zu fangen, wo eine übergeordnete Klasse ein Mitglied benennt, und eine unabhängige Unterklasse, die das Element außer Kraft verwendet, könnte lautlos weiter arbeiten, um die übergeordnete Klasse mit Implementierung.

Sie könnten Ihre Methode der Superklasse gleich nennen, ohne sie explizit zu überschreiben. Dies ist zulässig, da keine Einschränkungen aufgehoben werden. Grundsätzlich können Sie Ihre Methoden benennen, was Sie wollen.

@Override erzwingt nur, dass einer Ihrer Eltern eine Methode mit der gleichen Signatur haben muss.

+0

Danke zu erzwingen! Nach einigem Suchen ist dies das erste Mal, dass ich eine Erklärung gefunden habe, die wirklich geholfen hat! (anscheinend habe ich darüber geschwärzt, als ich die offiziellen Dokumente las) – KOGI