Перейти к основному содержимому

Аннотация Java @Override

· 2 мин. чтения

Задача: Сумма двух чисел

Напишите функцию twoSum. Которая получает массив целых чисел nums и целую сумму target, а возвращает индексы двух чисел, сумма которых равна target. Любой набор входных данных имеет ровно одно решение, и вы не можете использовать один и тот же элемент дважды. Ответ можно возвращать в любом порядке...

ANDROMEDA

1. Обзор

В этом кратком руководстве мы рассмотрим, как использовать аннотацию @Override .

2. @Override аннотация

В подклассе мы можем переопределить или перегрузить методы экземпляра. Переопределение указывает, что подкласс заменяет унаследованное поведение. Перегрузка — это когда подкласс добавляет новое поведение.

Иногда мы случайно перегружаемся, когда на самом деле намеревались переопределить. В Java легко сделать эту ошибку:

public class Machine {
public boolean equals(Machine obj) {
return true;
}

@Test
public void whenTwoDifferentMachines_thenReturnTrue() {
Object first = new Machine();
Object second = new Machine();
assertTrue(first.equals(second));
}
}

Удивительно, но тест выше не проходит. Это связано с тем, что этот метод equals перегружает Object#equals , а не переопределяет его.

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

В этом примере мы можем добавить аннотацию @Override над методом equals :

@Override
public boolean equals(Machine obj) {
return true;
}

В этот момент компилятор выдаст ошибку, сообщив нам, что мы не переопределяем равенство , как мы думаем.

Тогда мы можем исправить нашу ошибку:

@Override
public boolean equals(Object obj) {
return true;
}

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

3. Заключение

В этом руководстве мы увидели, как аннотация @Override работает в Java.

Полный исходный код примеров можно найти на GitHub .