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.