Наследование Flashcards
В чем польза наследования?
Наследование позволяет использовать повторно код и расширять существующие классы.
Наследующий класс получает все публичные свойства и методы родительского класса.
Для чего используется ключевое слово @override
Напиши пример кода родительского и класса-наследника.
Позволяет переопределять методы родительского класса.
Полезно, если ты хочешь изменить поведение метода.
class Animal {
void makeSound() {
print(‘Animal makes a sound’);
}
}
class Dog extends Animal {
@override
void makeSound() {
print(‘Dog barks instead’);
}
}
Расскажи про конструкторы в наследовании
Конструкторы не наследуются.
Но дочерние классы могут вызывать конструктор родителя с помощью super.
class Animal {
String name;
Animal(this.name);
}
class Dog extends Animal {
Dog(String name) : super(name);
}
Зачем конструктору класса Dog вызывать конструктор класса Animal?
Dog(String name) : super(name)
- Чтобы установить значение свойства name
- Наследование состояния:
Свойства, определённые в базовом классе, могут быть необходимы для корректной работы производного класса.
Вызывая конструктор Animal, мы обеспечиваем, что все необходимые поля и состояние базового класса инициализируются.
Слово “инициализируются” в программировании означает “устанавливаются” или “присваиваются начальные значения” переменным или свойствам. Это процесс, при котором переменные получают значения, которые будут использоваться в программе.
Что такое Миксины и для чего они нужны?
Это специальные классы, которые используются, чтобы унаследовать методы и поля от НЕСКОЛЬКИХ классов.
Миксины добавляют функциональность без наследования.
Их можно добавлять в клачч через ключевое слово with.
mixin Swimmable {
void swim() {
print(‘Swimming’);
}
}
class Dog extends Animal with Swimmable {}
Что значит super, как можно его использовать?
- вызывать конструктор родителя
- обращаться к методам родителя внутри дочерних классов
class Animal {
void makeSound() {
print(‘Animal sound’);
}
}
class Dog extends Animal {
@override
void makeSound() {
super.makeSound(); // Вызов родительского метода
print(‘Dog barks’);
}
}