2016-07-12 2 views

ответ

3

Аннотации не были частью языка, потому что разработчики языка не хотели применять его.

Он добавлен в качестве дополнительной аннотации для тех, кто хочет эту функцию, но это признается только инструментом анализатора, но на самом деле это не часть языка.

+0

Итак ... они сделали это необязательным, потому что они не хотели, чтобы это требовалось? Я уверен, что это было не так, но это кажется особенно бесполезным. – KOGI

+1

Это было сделано необязательно, потому что они не хотели, чтобы он был частью языка. Дарт не требует от вас ничего писать, чтобы переопределить метод. Так что действительно, это не * необязательно *, это * не существует вообще * с точки зрения языка. Некоторые люди хотят эту функцию, даже если язык ее не имеет, и они добавили поддержку аннотации и анализатора '@ override'. Аннотации должны действительно быть в пакете meta с другими признанными анализаторами аннотациями вместо того, чтобы быть в библиотеках платформы, и, возможно, мы в конечном итоге переместим его там. – lrn

3

От documentation:

Намерение @Override обозначений, чтобы поймать ситуации, когда суперкласс переименовывает элемент, и независимый подкласс, который используется для переопределения элемента, может тихо продолжить работу с использованием суперкласса реализация.

Возможно, вы захотите назвать свой метод равным суперклассу, не переопределяя его. Это разрешено, так как оно не нарушает никаких ограничений. В принципе вы можете назвать свои методы тем, что хотите.

@Override только гарантирует, что у одного из ваших родителей должен быть метод с той же подписью.

+0

Спасибо! После кучи поиска это первый раз, когда я нашел объяснение, которое действительно помогло! (по-видимому, я заглянул в него, когда прочитал официальные документы) – KOGI

Смежные вопросы