Interfaces se assemelham a classes abstratas. Se você entendeu bem o tópico sobre elas, não terá problemas aqui.
Vamos imaginar a seguinte situação: você está desenvolvendo uma aplicação para uma empresa que fabrica aparelhos eletrônicos diversos, como televisores, DVD Players, Tablets, Computadores e aparelhos de som.
É previsível que, como programador e diante dessa situação, você já comece a imaginar seu código contendo as classes "Televisor", "DVDPlayer", "Tablet", "Computador" e "AparelhoSom" e, em cada uma delas você fará planos para colocar as particularidades de cada um. Isso seria o que a maioria dos programadores pensaria e não está errado fazê-lo.
No entanto, algumas funções são comuns a todos os aparelhos citados, como, por exemplo, ligar e desligar e, se todos os aparelhos farão essas duas funções, é importante que não esqueçamos de cria-las em todas as classes e também seria interessante padroniza-las. Bem, é aí que entra a Interface. Seu papel é obrigar que todas as classes que “herdem” (esse não é o termo mais adequado para Interfaces, mas por enquanto deixemos assim) a Interface tenham que implementa-las.
Até aqui estamos diante das mesmas condições de uma classe abstrata, mas as diferenças começam a surgir agora. Uma classe abstrata pode conter métodos não abstratos, portanto com suas implementações feitas, enquanto em uma Interface isso não é possível. As Interfaces somente possuem assinaturas de métodos. Nelas os construtores também não são permitidos e, como ela não pode ser instanciada, eles também não são necessários. Vamos a um exemplo com códigos, para que tudo fique mais claro:
Vejam que, diferentemente de uma classe abstrata com métodos não abstratos, as Interfaces não aceitam corpo nos métodos:
Agora criarei uma classe chamada "DVDPlayer", que herdará essa simples Interface, vejam:
Agora vejam a questão da obrigatoriedade da implementação dos métodos. Vou tentar compilar essa aplicação e executa-la, mesmo sem ter criado, na classe "DVDPlayer", os métodos liga() e desliga(). Vejamos o que acontece:
O compilador identifica que os métodos não foram criados e exibe a mensagem de erro. Bem, até aí não vemos diferenças em relação a uma classe abstrata, mas agora já darei um exemplo de algo que diferencia uma Interface. Em C#, assim como em algumas outras linguagens, não é possível fazer herança múltipla, ou seja, herdar mais de uma classe. No entanto é possível herdar de várias Interfaces e isso pode, na maior parte dos casos, solucionar qualquer necessidade de herança múltipla que você tenha. Vou criar uma Interface qualquer, chamada de ITeste e criar nela um método Teste(), conforme a figura abaixo.
Agora farei a herança múltipla dessa Interface, na classe "DVDPlayer", vejam:
E vejam como tudo funciona perfeitamente. Vou tentar compilar a aplicação agora:
Percebam que não foi possível, pois o compilador identificou que o método Teste(), presente na Interface ITeste não foi criado, ou seja, a herança múltipla funcionou corretamente. Outro ponto importante a se destacar sobre as Interfaces é que elas não aceitam nenhum tipo de modificador de acesso, ao contrário das classes abstratas. Vejam o que acontece quando tentamos utilizar algum:
Para utilizarmos métodos da classe que herdou de uma Interface basta realizarmos o procedimento comum de instanciação, conforme o exemplo abaixo:
Basicamente o que diferencia uma classe abstrata de uma Interface é que nas classes abstratas você pode fazer uso dos modificadores de acesso e nelas nem todos os métodos precisam ser abstratos, ou seja, você pode ter métodos que não precisam ser implementados nas subclasses, pois já possuem seu corpo na própria superclasse.
A Interface cria um “contrato” entre as partes envolvidas, ou seja, você obrigatoriamente terá de implementar as assinaturas de todos métodos contidos nela, mas a forma como o fará é por sua conta. Como fica fácil perceber, as Interfaces surgiram para promover a padronização de métodos.
E conforme citei no início deste tópico, não é comum usar o termo “herdar de uma Interface” ou “herdar uma interface”, como eu utilizei por várias vezes. Só o fiz para não quebrar o raciocínio que escolhi para explicar esse importante assunto e não ter que descrever, ainda no início, o que, de fato, fazia a Interface, pois isso poderia confundir mais do que ajudar. O comum é utilizar o termo “assinar uma Interface”, ou ainda “implementar uma Interface”.
Apenas para encerrar, é importante saber que é possível herdar de uma classe abstrata e de interfaces simultaneamente. A única restrição é que, após o sinal de dois pontos (:), que determina o início das entidades que serão herdadas, a classe deve ser citada antes das Interfaces, conforme a figura abaixo:
É isso!
HARDWARE
Entendendo o seu computador
O que há dentro do meu computador?
Existem alguns componentes fundamentais presentes dentro do seu computador e é muito importante que você conheça um pouco sobre eles, seja para argumentar com algum vendedor durante a compra de um novo PC ou para identificar alguma atitude desleal de algum técnico que esteja te passando um orçamento para reparo. Na seção Raio-X aqui do Contém Bits você pode conhecer e entender mais detalhadamente sobre cada componente, ou também pode clicar abaixo no componente que deseja, para conhecê-lo melhor.
Você Sabia?
Final Fantasy

O famoso título Final Fantasy, da Square Enix, tem este nome exatamente porque se tratava da última esperança da empresa, que estava à beira da falência quando o lançou. Clique aqui e conheça detalhes dessa história.
Computadores de 1,5 tonelada

Em 1949 a revista Popular Mechanics fez uma previsão para o futuro, dizendo: "Um dia os computadores pesarão menos do que 1,5 tonelada". E pensar que temos smartphones capazes de realizar milhões de vezes mais operações do que os computadores daquela época.
Ábaco

O ábaco é o dispositivo de cálculo mais antigo construído e conhecido pelo homem. Suas formas mais primitivas datam de 400 a.C. e eles foram encontrados na China e na Babilônia. Para saber mais sobre a história dos computadores, clique aqui.
PDP-1

O primeiro computador a conseguir rodar o jogo Spacewar era o PDP-1, que custava 120 mil dólares e pertencia ao Massachusetts Institute of Technology. O jogo demorou 200 horas para ser desenvolvido, em 1962, e seu criador foi um cientista da computação chamado Steve Russel.
Space Invaders

A partida mais longa do clássico Space Invaders durou incríveis 38 horas e 32 minutos e esta façanha foi conseguida por um jogador de apenas 12 anos! O jogo, claro, podia ser pausado para alimentação e descanso, mas ainda assim o recorde, estabelecido no dia 02/09/1980, ainda não foi quebrado. Saiba mais.
Muitos aplicativos

Instalar vários aplicativos com o mesmo propósito, como editores de texto, reprodutores de músicas ou vídeos e até programas antívirus sobrecarregam o seu sistema operacional e ainda ocupam espaço desnecessário em seu HD. Tenha apenas um bom programa para cada função.
Recorde de patentes

A IBM detém o recorde de patentes em um único ano, atingindo a marca de 4186 registros no ano de 2008. Clique aqui e saiba mais sobre esta gigante do mundo da tecnologia.
Nintendo Entertainment System

O console Nintendo Entertainment System (NES), da Nintendo, detém o recorde de videogame mais clonado em todo o mundo. Já foram catalogados mais de 300 aparelhos diferentes capazes de reproduzir seus jogos! Saiba mais sobre ele aqui.
Duck Hunt

Ao completar o nível 99 do jogo Duck Hunt, para Nintendo, o jogo retorna ao primeiro nível, mas um bug impede que se acerte os patos neste recomeço. Este é um exemplo do que é chamado no mundo dos games de "Kill Screen".
Nintendo Wii

Nos primeiros oito dias após o lançamento do console Nintendo Wii foram vendidas 600 mil unidades. Isso equivale a quase um por segundo e estes incríveis números são referentes às vendas apenas nos EUA!
Ultima Online

Criar um jogo é muito mais complexo do que parece. São milhares, às vezes, milhões de linhas de código. Isso não é exagero! Apenas o jogo Ultima Online possui 6.006.313 linhas de programação, totalizando 25.103.295 palavras
Mario e seu bigode

O personagem Mario só possui bigode porque quando ele foi criado, em 1981, a resolução de tela dos equipamentos disponíveis não permitia que fosse desenhada uma boca, então os desenvolvedores fizeram o grande bigode para contornar essa limitação tecnológica.










