Ключевое слово extends
Ключевое слово extends используется при объявлении класса
для указания родительского класса, от которого наследуется
новый класс. Класс, который наследует, называется подклассом
(или дочерним классом), а класс, от которого наследуют -
надклассом (или родительским классом). Подкласс получает
доступ ко всем публичным свойствам и методам родителя,
а также может переопределять их и добавлять собственные.
В Dart каждый класс может наследоваться только от одного
класса, но при этом сам может быть родителем для
неограниченного числа подклассов.
Синтаксис
class ChildClass extends ParentClass
{
// тело класса
}
Пример
Давайте создадим родительский класс Animal
с методом sound и наследуем от него класс Dog:
class Animal
{
void sound()
{
print('Some sound');
}
}
class Dog extends Animal
{
}
void main()
{
Dog dog = Dog();
dog.sound();
}
Результат выполнения кода:
"Some sound"
Пример
Давайте переопределим метод sound в дочернем классе
Dog и добавим собственный метод fetch:
class Animal
{
void sound()
{
print('Some sound');
}
}
class Dog extends Animal
{
@override
void sound()
{
print('Woof');
}
void fetch()
{
print('Fetching');
}
}
void main()
{
Dog dog = Dog();
dog.sound();
dog.fetch();
}
Результат выполнения кода:
"Woof"
"Fetching"
Пример
Давайте вызовем конструктор родительского класса из
конструктора дочернего с помощью ключевого слова super:
class Animal
{
String name;
Animal(this.name);
}
class Dog extends Animal
{
Dog(String name) : super(name);
}
void main()
{
Dog dog = Dog('Rex');
print(dog.name);
}
Результат выполнения кода:
"Rex"
Пример
Давайте проверим, что дочерний класс является экземпляром
родительского с помощью оператора is:
class Animal
{
}
class Dog extends Animal
{
}
void main()
{
Dog dog = Dog();
print(dog is Animal);
print(dog is Dog);
}
Результат выполнения кода:
true
true
Смотрите также
-
ключевое слово
implements,
которое реализует интерфейс класса -
ключевое слово
with,
которое подключает миксины к классу -
ключевое слово
super,
которое обращается к родительскому классу -
ключевое слово
abstract,
которое объявляет абстрактный класс