Ключевое слово implements
Ключевое слово implements используется при объявлении класса и указывает, что данный класс реализует интерфейс другого класса или нескольких классов. В отличие от наследования через extends, при использовании implements класс не получает реализацию методов родителя, а обязан предоставить собственную реализацию всех членов интерфейса: методов, геттеров и сеттеров. После ключевого слова implements можно перечислить один или несколько интерфейсов через запятую.
Синтаксис
class ClassName implements Interface1, Interface2
{
// implementation of all members
}
Пример
Давайте объявим абстрактный класс Animal с методом makeSound и реализуем его в классе Dog:
abstract class Animal
{
void makeSound();
}
class Dog implements Animal
{
@override
void makeSound()
{
print('Woof');
}
}
void main()
{
Dog dog = Dog();
dog.makeSound();
}
Результат выполнения кода:
"Woof"
Пример
Давайте реализуем сразу два интерфейса в одном классе:
abstract class Walker
{
void walk();
}
abstract class Swimmer
{
void swim();
}
class Duck implements Walker, Swimmer
{
@override
void walk()
{
print('Duck walks');
}
@override
void swim()
{
print('Duck swims');
}
}
void main()
{
Duck duck = Duck();
duck.walk();
duck.swim();
}
Результат выполнения кода:
"Duck walks"
"Duck swims"
Пример
Давайте реализуем интерфейс с геттером и сеттером:
abstract class Named
{
String get name;
set name(String value);
}
class Person implements Named
{
String _name = '';
@override
String get name => _name;
@override
set name(String value)
{
_name = value;
}
}
void main()
{
Person person = Person();
person.name = 'abcde';
print(person.name);
}
Результат выполнения кода:
"abcde"