Аннотация @override
Аннотация @override используется перед объявлением метода,
геттера, сеттера или поля, чтобы явно указать, что этот элемент
переопределяет соответствующий элемент из родительского класса.
Она не является обязательной, но настоятельно рекомендуется:
если вы помечаете метод аннотацией @override, но в родителе
нет подходящего метода, компилятор выдаст ошибку. Это помогает
избежать опечаток и случайного создания нового метода вместо
переопределения существующего.
Синтаксис
@override
возвращаемый_тип имя_метода(параметры)
{
// тело метода
}
Пример
Давайте создадим родительский класс Animal с методом
speak и переопределим его в классе Dog:
class Animal
{
void speak()
{
print('Some sound');
}
}
class Dog extends Animal
{
@override
void speak()
{
print('Woof');
}
}
void main()
{
Dog dog = Dog();
dog.speak();
}
Результат выполнения кода:
"Woof"
Пример
Если пометить метод аннотацией @override, но в родительском
классе такого метода нет, компилятор сообщит об ошибке:
class Animal
{
void speak()
{
print('Some sound');
}
}
class Dog extends Animal
{
@override
void bark()
{
print('Woof');
}
}
void main()
{
Dog dog = Dog();
dog.bark();
}
В этом случае возникнет ошибка компиляции, так как метод
bark не переопределяет ни один метод родителя.
Смотрите также
-
ключевое слово
super,
которое обращается к родительскому классу -
ключевое слово
this,
которое ссылается на текущий объект -
аннотация
deprecated,
которая помечает устаревший код -
аннотация
immutable,
которая указывает на неизменяемость класса