Uma interface declara um contrato — um conjunto de métodos que um tipo deve fornecer — com nenhuma (ou mínima) implementação. Uma classe abstrata é uma classe parcialmente implementada que pode manter estado compartilhado e métodos concretos, mas não pode ser instanciada. A distinção chave: uma classe pode implementar muitas interfaces, mas herdar de apenas uma classe.
