Аннотации @Override в Android

Я новичок в программировании на Java и Android. Проблема, которую я испытываю, заключается в том, что после просмотра нескольких книг, форума и веб-сайтов у меня нет четкого понимания того, что делает аннотация @override. Я понимаю, что это означает, что когда метод перегоняется. но зачем это нужно в андроиде. Я редко вижу его в исходном коде java, но все время в 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 означает, что вы используете методы заимствования из доступного класса и не определены программистом.