Saudacoes galera!!Bom, hoje resolvi disponibilizar para meus amigos este post do Rudson Kiyoshi Souza Carvalho, que explica muito bem como usar classes abstratas, classes seladas e interfaces. Na verdade, a minha ideia era tentar tirar duvidas de amigos e ate algumas minhas, espero que gostem e que atraves deste post possa esclarecer um pouco mais para voces.Trabalhando com classes abstratas, classes seladas e interfaces em C#Por Rudson Kiyoshi Souza CarvalhoResumoEste artigo descreve o que sao Classes Abstratas, Seladas e Interfaces, e tambem explica quando devemos implementar cada uma delas em nosso codigo.IntroducaoUtilizar classes seladas e um novo conceito adicionado ao C#. O conceito de quando utilizar cada tipo de classe pode parecer um pouco confuso no inicio, mas apos ter entendido bem os conceitos de cada uma e entender suas similaridades, poderemos partir para um desenvolvimento mais seguro e escalavel, tentarei neste artigo descrever nao so cada tipo de classe, mas tambem descrever algumas situacoes que devemos usar este tipo de codificacao. Os exemplos de codigos abaixo utilizam a linguagem C#.O que e uma classe abstrata? (Abstract Class)A classe abstrata e um tipo de classe que somente pode ser herdada e nao instanciada, de certa forma pode se dizer que este tipo de classe e uma classe conceitual que pode definir funcionalidades para que as suas subclasses (classes que herdam desta classe) possam implementa-las de forma nao obrigatoria, ou seja ao se definir um conjunto de metodos na classe abstrata nao e de total obrigatoriedade a implementacao de todos os metodos em suas subclasses, em uma classe abstrata os metodos declarados podem ser abstratos ou nao, e suas implementacoes devem ser obrigatorias na subclasse ou nao, quando criamos um metodo abstrato em uma classe abstrata sua implementacao e obrigatoria, caso voce nao implemente o mesmo o compilador criara um erro em tempo de compilacao.Exemplo de implementacao retirado do books online em C#. abstract class formaClasse { abstract public int Area(); } class quadrado : formaClasse { int x, y; // Se nao for implementado o metodo Area() // sera gerado um compile-time error. public override int Area() { return x * y; } }O que e uma Interface? (Interface)As interfaces sao fundamentais em um sistema orientado a objetos, quando dizemos que um objeto e a instancia de uma classe, na verdade queremos dizer, que este objeto implementa a interface definida pela classe, ou seja uma interface define as operacoes que um objeto sera obrigado a implementar. Para cada operacao declarada por um objeto deve ser especificado o nome da operacao, os objetos que esta operacao aceita como parametro e o tipo de valor retornado pela operacao; este conjunto de informacoes sobre uma determinada operacao tem o nome de assinatura da operacao, e um conjunto de assinaturas de operacoes da-se o nome de interface.E importante lembrar que uma interface nunca contem implementacao, ou seja numa interface nao se pode definir campos, pois o mesmo e uma implementacao de um atributo objeto, a interface tambem nao permite construtores pois num contrutor temos as instrucoes usadas para inicializar campos. Para podermos usar uma interface devemos