criar uma classe ou estrutura e herdar da interface, com isso e obrigatorio implementar todos os metodos da interface.Exemplo de implementacao retirado do books online em C#. interface IExemploInterface { void ExemploMetodo(); } class Implementacaoclasse : IExemploInterface { // Implementacao explicita da interface void IExemploInterface.ExemploMetodo() { // Implementacao do metodo } static void Main() { // Declarando uma instancia de uma interface IExemploInterface obj = new Implementacaoclasse(); // chame o metodo. obj.SampleMethod(); } }Classes Abstratas X InterfacesUma classe abstrata pode conter metodos completos ou incompletos. Uma Interface pode conter apenas a assinatura de um metodo, mas nenhum corpo ou implementacao. Portanto, em uma classe abstrata pode-se implementar metodos, mas em uma Interface nao. Uma classe abstrata pode conter campos, construtores, ou destrutores e aplicar propriedades. Uma interface nao pode conter campos, construtores, ou destrutores pode possuir apenas a propriedade da assinatura, mas nao a implementacao. Uma classe abstrata nao suporta multiplas herancas, mas uma interface pode suportar multiplas heranca. Assim, uma classe pode herdar varias interfaces, mas apenas uma classe abstrata. Uma classe que implementa uma interface tem de obrigatoriamente implementar todos os metodos da interface, mas o mesmo nao e exigido no caso de uma classe abstrata. As classes abstratas sao mais rapidas que as interfaces.O que e uma classe selada? (Sealed Class)Uma classe selada e utilizada para restringir caracteristicas da heranca do objeto, quando uma classe e definida como sealed, esta classe nao podera ser herdada, caso voce tente o compilador criara um erro em tempo de compilacao, apos criar uma classe selada pode se observar que o intelisense nao mostra o nome da classe definida como sealed quando voce tenta criar uma heranca para novas classes.Exemplo de implementacao retirado do books online em C#. sealed class ClasseSelada { public int x; public int y; } class MainClass { static void Main() { ClasseSelada sc = new ClasseSelada(); sc.x = 110; sc.y = 150; Console.WriteLine("x = {0}, y = {1}", sc.x, sc.y); } }Entao, quando devo utilizar o que?Classes Abstratas podem adicionar mais funcionalidades, sem destruir as funcionalidades das classes filhos que poderiam estar usando uma versao mais antiga. Classes abstratas fornecem uma maneira simples e facil para versionar nossos componentes. Atraves da atualizacao da classe base, todas as classes que herdam sao atualizadas automaticamente com a mudanca. Em uma interface, a criacao de funcoes adicionais tera um efeito sobre suas classes filhos, devido a necessidade de implementacao dos Metodos criados na interface. Classes abstratas deveriam ser usadas principalmente para objetos que estao estritamente relacionados, enquanto o uso de interfaces e mais adequado para fornecer funcionalidade comum a classes independentes.Digamos que existem duas classes, de passaros e de avioes, e nas duas exista os metodos chamados voar(). Seria estranho para uma classe avioes herdar a partir de umas classe passaros apenas porque necessita do metodo voar(). Em vez disso, o metodo voar() deve ser definido em uma interface e em ambas as classes passaros e avioes devem implementar a interface. Se quisermos proporcionar uma funcionalidade em comum para os componentes, devemos utilizar uma classe abstrata.Classes abstratas nos permitem implementar parcialmente