Следите за новинками
в нашем Telegram канале. Жми, чтобы подписаться:)
⊗dtOpAbCn 49 of 113 menu
◀ ▶

Конструктор абстрактного класса в Dart

Абстрактный класс может иметь конструктор с параметрами. Общие данные инициализируют в родителе, а потомок передает значения через super в своем конструкторе.

Заголовок записи зададим в конструкторе абстрактного Post:

abstract class Post { Post(this.title); String title; String getTitle() => title; void setTitle(String title) { this.title = title; } abstract void increaseRevenue(int value); }

Класс Employee принимает заголовок и зарплату, заголовок передает в конструктор родителя:

class Employee extends Post { int salary; Employee(super.title, this.salary); int getSalary() => salary; void setSalary(int salary) { this.salary = salary; } @override void increaseRevenue(int value) { salary += value; } }

При создании объекта вызывается цепочка конструкторов - сначала родитель получает заголовок, затем инициализируются поля потомка:

var employee = Employee("note", 1000); print(employee.getTitle()); print(employee.getSalary());

В абстрактном классе допустимо тело конструктора - оно выполнится при создании любого конкретного потомка после инициализации параметров:

abstract class Post { Post(this.title) { if (title.isEmpty) { throw ArgumentError("title must not be empty"); } } String title; abstract void increaseRevenue(int value); }

Класс Note передает заголовок родителю через super.title:

class Note extends Post { int likes; Note(super.title, this.likes); @override void increaseRevenue(int value) { likes += value; } int getLikes() => likes; }

Сделайте абстрактный класс Post с конструктором, принимающим заголовок записи. Сделайте класс Employee с конструктором, принимающим заголовок и зарплату, и передайте заголовок в конструктор родительского класса.

Сделайте класс Note с конструктором, принимающим заголовок и число лайков. Передайте заголовок в конструктор родительского класса и напишите реализацию абстрактного метода increaseRevenue.

← →
↑
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить