Solidez - Constructores
Constructor es una función especial declarada usando constructorpalabra clave. Es una función opcional y se utiliza para inicializar las variables de estado de un contrato. A continuación se presentan las características clave de un constructor.
Un contrato solo puede tener un constructor.
Un código de constructor se ejecuta una vez cuando se crea un contrato y se usa para inicializar el estado del contrato.
Después de que se ejecuta un código de constructor, el código final se implementa en blockchain. Este código incluye funciones públicas y código accesible a través de funciones públicas. El código de constructor o cualquier método interno utilizado solo por el constructor no se incluyen en el código final.
Un constructor puede ser público o interno.
Un constructor interno marca el contrato como abstracto.
En caso de que no se defina ningún constructor, un constructor predeterminado está presente en el contrato.
pragma solidity ^0.5.0;
contract Test {
constructor() public {}
}
En caso de que el contrato base tenga un constructor con argumentos, cada contrato derivado debe pasarlos.
El constructor base se puede inicializar directamente de la siguiente manera:
pragma solidity ^0.5.0;
contract Base {
uint data;
constructor(uint _data) public {
data = _data;
}
}
contract Derived is Base (5) {
constructor() public {}
}
El constructor base se puede inicializar indirectamente de la siguiente manera:
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 {}
}
No se permiten formas directas e indirectas de inicializar el constructor del contrato base.
Si el contrato derivado no pasa argumento (s) al constructor del contrato base, entonces el contrato derivado se volverá abstracto.