Em programação orientada a objetos, as interfaces têm como finalidade
A) possibilitar a criação de classes que possuam apenas métodos com visibilidade pública.
B) realizar anotações no código-fonte para registrar metadados sobre classes.
C) permitir a utilização de herança múltipla, possibilitando que uma classe seja subclasse direta de um número arbitrário de superclasses, mesmo em linguagens que suportam apenas herança simples.
D) possibilitar a criação de classes que possuam apenas métodos, mas não possuam nenhum atributo ou propriedade.
E) definir comportamento comum que pode ser implementado por um conjunto de classes, a despeito de sua hierarquia de superclasses.