Abstract
O conceito de contratos abstratos é utilizado para criar contratos que servem como modelos base para outros contratos, mas que não têm a intenção de serem implantados por si próprios. Um contrato é considerado abstrato se pelo menos uma de suas funções não possuir implementação completa dentro do contrato. Essa falta de implementação indica que o contrato está destinado a ser estendido por outros contratos que completarão essas implementações. Os contratos abstratos são uma ferramenta fundamental em Solidity, permitindo que os desenvolvedores definam interfaces e comportamentos comuns que podem ser compartilhados e estendidos por múltiplos contratos.
CaracterÃsticas dos Contratos Abstratos
Funções sem implementar: A principal caracterÃstica de um contrato abstrato é que ele contém pelo menos uma função sem uma implementação completa. Isso é indicado pela ausência do corpo da função (as chaves
{}
) e finalizando a declaração da função com um ponto e vÃrgula (;
).Herança: Os contratos abstratos são projetados para serem herdados por outros contratos. Um contrato que herda de um contrato abstrato deve implementar todas as funções não implementadas, a menos que o contrato também seja declarado como abstrato.
Palavra-chave
**abstract**
: É usada para declarar explicitamente um contrato como abstrato. A introdução dessa palavra-chave permite que os desenvolvedores comuniquem suas intenções de forma mais clara e evitem a implantação acidental de contratos incompletos.Uso de
**virtual**
e**override**
: No contexto de contratos abstratos, as funções não implementadas podem ser marcadas comovirtual
, e os contratos que herdam essas funções devem usar a palavra-chaveoverride
ao fornecer uma implementação, seguindo o sistema de herança e polimorfismo de Solidity.
Vejamos um exemplo abaixo:
Neste exemplo, Animal
é um contrato abstrato porque possui uma função, makeSound
, sem implementação. A palavra-chave virtual
indica que essa função está destinada a ser sobrescrita pelos contratos herdeiros. Os contratos Dog
e Cat
herdam de Animal
e fornecem suas próprias implementações da função makeSound
, utilizando a palavra-chave override
para indicar que estão sobrescrevendo a função abstrata.
Last updated