Ich verstehe die Definition einer @override Annotation.Warum ist @override Annotation optional?
Aber warum ist die Verwendung der Anmerkung optional?
Ich verstehe die Definition einer @override Annotation.Warum ist @override Annotation optional?
Aber warum ist die Verwendung der Anmerkung optional?
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.
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.
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
Sie können eine Linter Regel ermöglichen es
durch Hinzufügen einer .analysis_options
Datei zu Ihrem Projekt neben der pubspec.yaml
Datei mit diesem Inhalt
linter:
rules:
- annotate_overrides
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
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