Именованный конструктор
Именованный конструктор в Dart - это конструктор, который имеет собственное имя, отличное от имени класса. Это позволяет создавать несколько конструкторов для одного класса, каждый из которых может принимать разный набор параметров и выполнять разную логику инициализации. Именованный конструктор объявляется через имя класса, за которым следует точка и имя конструктора. В первом параметре мы передаем значение для инициализации соответствующего поля, во втором - следующее значение и так далее.
Синтаксис
class ClassName
{
ClassName.namedConstructor(parameters)
{
// body
}
}
Пример
Давайте создадим класс Point с именованным конструктором
Point.origin, который создает точку в начале координат:
class Point
{
double x;
double y;
Point(this.x, this.y);
Point.origin()
{
x = 0;
y = 0;
}
}
void main()
{
Point p = Point.origin();
print('${p.x}, ${p.y}');
}
Результат выполнения кода:
"0.0, 0.0"
Пример
Давайте создадим именованный конструктор с параметрами, который принимает координаты и создает точку:
class Point
{
double x;
double y;
Point(this.x, this.y);
Point.fromCoordinates(this.x, this.y);
}
void main()
{
Point p = Point.fromCoordinates(1, 2);
print('${p.x}, ${p.y}');
}
Результат выполнения кода:
"1.0, 2.0"
Пример
Давайте создадим класс с несколькими именованными конструкторами для разных сценариев:
class User
{
String name;
int age;
User(this.name, this.age);
User.guest()
{
name = 'abcde';
age = 0;
}
User.admin()
{
name = '12345';
age = 30;
}
}
void main()
{
User u1 = User.guest();
User u2 = User.admin();
print('${u1.name}, ${u1.age}');
print('${u2.name}, ${u2.age}');
}
Результат выполнения кода:
"abcde, 0"
"12345, 30"
Смотрите также
-
конструктор
объявление класса,
который создает экземпляр класса -
initializer list,
который инициализирует поля до тела конструктора -
redirecting constructor,
который перенаправляет вызов другому конструктору -
factory,
который создает фабричный конструктор