Я новичок в программировании на Java и Android. Проблема, которую я испытываю, заключается в том, что после просмотра нескольких книг, форума и веб-сайтов у меня нет четкого понимания того, что делает аннотация @override. Я понимаю, что это означает, что когда метод перегоняется. но зачем это нужно в андроиде. Я редко вижу его в исходном коде java, но все время в android.
Аннотации @Override в Android
Ответ 1
Вы можете увидеть это редко в старом исходном коде Java, потому что это довольно недавняя инновация - в то время как Android-код в последнее время по большей части по определению.
Это безопасная сеть, на самом деле - она сообщает компилятору, что вы пытаетесь переопределить что-то - поэтому, пожалуйста, пропустите, если метод не переопределяет что-либо, например. из-за опечатки в названии. Это просто как override
, являющееся ключевым словом, которое является частью объявления метода в С#. Это помогает вам быть явным в том, что вы делаете, что помогает предотвратить ошибки, а также делает ваш код более ясным для будущих читателей.
Ответ 2
Хорошо, если вы понимаете базовую аннотацию @Override, это просто метаданные, которые заполняют две цели:
-
Опишите, что метод, который он переопределяет, поскольку он был определен в интерфейсе или расширенном классе
-
Помогает вам правильно определить, какой метод локально объявлен и который является переопределяющим, поскольку в андроиде вы, вероятно, будете распространяться из фрагмента, активности, служб, BroadcastReceiver и т.д., это хорошая практика, которая сделает ваш код более чистым.
Что касается проблемы, которую вы не видите в стиле Java, это связано не только с тем, что она довольно новая функция (не новая с 2005 года), а потому, что вы не переопределяете метод, который, по крайней мере, в java не в Swing или SWT, чаще всего вы найдете их в TableModel или когда сервлет в расширенных классах HttpServlet
Ответ 3
потому что вы переопределяете множество методов, например: при создании Activity
(который расширяет Activity
) вам необходимо переопределить метод onCreate( Bundle savedInstanceState)
для инициализации Activity
и т.д., каждый раз, когда вы переопределяете метод из класса Mother, eclipse добавляет аннотацию @override
Ответ 4
@Override
означает, что вы хотите переопределить функцию из суперкласса в дочернем классе. Подробнее об абстрактных методах, классах, полиморфизме.
Ответ 5
Я ничего не знаю о Android-программировании, но @Override-annotation используется, чтобы показать, что метод переопределяет метод суперкласса (или реализует метод интерфейса в Java 1.6). Помимо чисто документального значения аннотации, по крайней мере, Eclipse также предупреждает вас (или отмечает это ошибка в зависимости от ваших настроек), если этот метод фактически не отменяет какой-либо метод суперкласса, когда вы думаете, что он это делает (таким образом, предотвращая некоторую неприятную ошибку -hunting). Возможно, Android-компилятор по умолчанию требует, чтобы все переопределяющие методы были аннотированы с помощью @Override.
Ответ 6
Это не нужно для java и android. Вы часто видите это в программах Android, потому что eclipse автоматически добавляет его при создании нового действия, метода и т.д. Если вы удалите анноту @Override, ничего не будет добавлено.
Ответ 7
@overide - это что-то вроде виртуального метода в С++, метод Oncreate в android больше похож на виртуальный bool Oninit() в wxWidget, этот метод используется android (Oncreate) для создания вашего графического интерфейса, так как GUI отличается от того, кто программирует код в изменении Oncreate, поэтому мы должны его использовать. Мы используем любой метод, который используется библиотекой и которую мы хотим настроить. Oncreat() как Oninit() - это тот метод, который мы также хотим настроить.
Ответ 8
out_marginLeft="50dp"
android:layout_marginTop="50dp"
android:layout_marginRight="50dp"
android:gravity="center"
android:orientation="vertical">
<ProgressBar
android:id="@+id/progressBar"
style="?android:attr/progressBarStyleHorizontal"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_above="@+id/txtProgress"
android:layout_centerHorizontal="true"
android:layout_marginLeft="16dp"
android:layout_marginRight="16dp"
android:progress="50"
android:progressTint="@android:color/black" />
<TextView
android:id="@+id/txtProgress"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="8dp"
android:text="Progress"
android:textColor="@android:color/black" />
</LinearLayout>
Java
Ответ 9
@override
означает, что вы используете методы заимствования из доступного класса и не определены программистом.