Solidity - Конструкторы
Конструктор - это специальная функция, объявленная с использованием constructorключевое слово. Это дополнительная функция, которая используется для инициализации переменных состояния контракта. Ниже приведены ключевые характеристики конструктора.
В контракте может быть только один конструктор.
Код конструктора выполняется один раз при создании контракта и используется для инициализации состояния контракта.
После выполнения кода конструктора окончательный код развертывается в блокчейне. Этот код включает общедоступные функции и код, доступный через общедоступные функции. Код конструктора или любой внутренний метод, используемый только конструктором, не включается в окончательный код.
Конструктор может быть публичным или внутренним.
Внутренний конструктор отмечает контракт как абстрактный.
Если конструктор не определен, в контракте присутствует конструктор по умолчанию.
pragma solidity ^0.5.0;
contract Test {
constructor() public {}
}
Если в базовом контракте есть конструктор с аргументами, каждый производный контракт должен их передавать.
Базовый конструктор можно инициализировать напрямую, используя следующий способ:
pragma solidity ^0.5.0;
contract Base {
uint data;
constructor(uint _data) public {
data = _data;
}
}
contract Derived is Base (5) {
constructor() public {}
}
Базовый конструктор может быть инициализирован косвенно следующим образом:
pragma solidity ^0.5.0;
contract Base {
uint data;
constructor(uint _data) public {
data = _data;
}
}
contract Derived is Base {
constructor(uint _info) Base(_info * _info) public {}
}
Прямой и косвенный способы инициализации конструктора базового контракта не допускаются.
Если производный контракт не передает аргумент (ы) конструктору базового контракта, тогда производный контракт станет абстрактным.