Solidez - Construtores

Construtor é uma função especial declarada usando constructorpalavra-chave. É uma função opcional e é usada para inicializar variáveis ​​de estado de um contrato. A seguir estão as principais características de um construtor.

  • Um contrato pode ter apenas um construtor.

  • Um código de construtor é executado uma vez quando um contrato é criado e é usado para inicializar o estado do contrato.

  • Após a execução de um código de construtor, o código final é implantado em blockchain. Este código inclui funções públicas e código acessível por meio de funções públicas. O código do construtor ou qualquer método interno usado apenas pelo construtor não está incluído no código final.

  • Um construtor pode ser público ou interno.

  • Um construtor interno marca o contrato como abstrato.

  • No caso, nenhum construtor é definido, um construtor padrão está presente no contrato.

pragma solidity ^0.5.0;

contract Test {
   constructor() public {}
}
  • Caso o contrato base tenha construtor com argumentos, cada contrato derivado deve passá-los.

  • O construtor de base pode ser inicializado diretamente usando a seguinte maneira -

pragma solidity ^0.5.0;

contract Base {
   uint data;
   constructor(uint _data) public {
      data = _data;   
   }
}
contract Derived is Base (5) {
   constructor() public {}
}
  • O construtor de base pode ser inicializado indiretamente usando a seguinte maneira -

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 {}
}
  • Maneiras diretas e indiretas de inicializar o construtor do contrato base não são permitidas.

  • Se o contrato derivado não estiver passando argumento (s) para o construtor do contrato base, então o contrato derivado se tornará abstrato.