Já tem algum tempo que não escrevo um novo artigo. Realmente ando um tanto ocupado ultimamente, mas mesmo assim, volta e meia dou uma espiada no movimento aqui no blog, e fico atendo a participação dos leitores. Pretendo retomar meu ritmo de publicações pouco a pouco.
Hoje falaremos de Interfaces. Uma interface lembra uma classe, porém contém apenas assinaturas de métodos, propriedades, eventos ou indexadores, que devem ser implementados em uma classe. A classe ou estrutura que implementa uma interface deve implementar os membros especificados nesta interface. No exemplo a seguir, a classe ClasseImplementada implementa a interface IExemploInterface e por isto precisa ter um método void, chamado MetodoExemplo, que não receba parâmetros.
interface IExemploInterface
{
void MetodoExemplo();
}
class ClasseImplementada : IExemploInterface
{
void ISampleInterface. MetodoExemplo ()
{
}
static void Main()
{
IExemploInterface obj = new ClasseImplementada ();
obj. MetodoExemplo ();
}
}
Uma interface pode ser um membro de um namespace ou uma classe e pode conter assinaturas de métodos, propriedade, indexadores ou eventos. A interface pode herdar de uma ou mais interfaces, como podemos ver no exemplo abaixo.
interface IControle
{
void Paint();
}
interface IAparencia
{
void Paint();
}
public class ClasseExemplo : IControle, IAparencia
{
void IControle.Paint()
{
System.Console.WriteLine("IControle.Paint");
}
void IAparencia.Paint()
{
System.Console.WriteLine("IAparencia.Paint");
}
}
Como disse a pouco, uma classe que implementa uma interface, deve implementar seus membros. No exemplo anterior, a classe ClasseExemplo implementa IControle e IAparencia, e seus métodos. Repare que as duas interfaces implementadas em ClasseExemplo possuem um método chamado Paint, ambos com a mesma assinatura. Assim, para diferenciar os métodos implementados usa-se o que é chamado de implementação explicita de interface, onde explicitamos qual método, de qual interface está sendo implementado, veja:
void IControle.Paint()
{
System.Console.WriteLine("IControle.Paint");
}
void IAparencia.Paint()
{
System.Console.WriteLine("IAparencia.Paint");
}
Porém, é importante ressaltar que os métodos implementados na classe não serão expostos nas instâncias da classe ClasseExemplo, e sim nas instancias das interfaces. Desta forma, para chamar estes métodos, é necessário declarar uma instancia da classe, e fazer um cast (converter) do objeto para o tipo da interface, assim:
ClasseExemplo obj = new ClasseExemplo();
//obj.Paint(); // Erro de compilação.
IControle c = (IControle)obj;
c.Paint(); // Chamada de IControle.Paint em ClasseExemplo.
IAparencia s = (IAparencia)obj;
s.Paint(); // Chamada de IAparencia.Paint em ClasseExemplo.
Fonte: http://msdn.microsoft.com/pt-br/library/ms173157.aspx e http://msdn.microsoft.com/pt-br/library/87d83y5b.aspx#Y114. Todos os exemplos foram extraídos ou baseados na documentação do MSDN.
0 comentários:
Postar um comentário