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.