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 como virtual, e os contratos que herdam essas funções devem usar a palavra-chave override ao fornecer uma implementação, seguindo o sistema de herança e polimorfismo de Solidity.