Interfaces en C#
Referencia del lenguaje C#
Interfaz (Referencia de C#)
Definición: una interfaz es una forma de restricción que solo incluye definiciones de miembros y no incluye implementaciones de miembros.
Propósito: El propósito principal de la interfaz es proporcionar servicios de procesamiento general para clases no relacionadas. Dado que en C# solo se permite la herencia única en una estructura de árbol, es decir, una clase solo puede heredar de una clase principal, las interfaces son la única forma de proporcionar más de dos clases base para una clase.
Declaración: La declaración de una interfaz es similar a la declaración de una clase, pero la palabra clave utilizada es interfaz en lugar de clase.
Las interfaces solo contienen firmas para métodos, propiedades, indexadores y eventos. void?ISampleInterface.SampleMethod(){/method implementation.main();}static?void?Main(){//Definir la variable de instancia de la interfaz obj.interface?ISampleInterface?obj=new?ImplementationClass();// Llamada (método miembro de obj). Read();}} La definición de miembros de la interfaz: similar a la definición de miembros de la clase, pero tenga en cuenta:
Los modificadores de acceso (público, privado, protegido o interno) no están permitidos y todos los miembros de la interfaz deben ser público****;
Los miembros de la interfaz no pueden contener entidades de código;
Los miembros de la interfaz no pueden definir miembros de campo;
Los miembros de la interfaz no pueden usar las palabras clave estática y virtual, abstracto o sellado para definir;
El uso de miembros de definición de tipo está prohibido.
Para ocultar los miembros heredados de una interfaz base, puede definirlos usando la palabra clave new, por ejemplo: interface?IMyBaseInterface{void?DoSomething();}interface?IMyDerivedInterface: IMyBaseInterface{new?void?DoSomething ();} Nota:
Una interfaz puede ser miembro de un espacio de nombres o una clase y puede contener las firmas de los siguientes miembros:
Métodos Atributos Indexadores Eventos Las interfaces pueden ser derivado de una o más herencias de interfaz base.
Cuando la lista de clases base contiene una clase base y una interfaz, la clase base debe ser el primer elemento de la lista.
Una clase que implementa una interfaz puede implementar explícitamente los miembros de la interfaz. No se puede acceder a los miembros implementados explícitamente a través de instancias de clase, sino solo a través de instancias de interfaz, por ejemplo:
Para obtener más información y ejemplos de código sobre implementaciones de interfaz explícitas, consulte Implementación de interfaz explícita (Guía de programación de C#).
Ejemplo
El siguiente ejemplo demuestra la implementación de la interfaz. En este ejemplo, la interfaz IPoint contiene declaraciones de propiedades que son responsables de configurar y obtener valores de campo.
//keyword_interface_2.cs//Implementación de interfazusando?System;interfaceIPoint{//Propertysignatures:intx{get; set;}inty{get; set;}} class?Point:IPoint{//Fields:private?int?_x;private? int?_y;//Constructor:public?Point(int?x,int?y){_x=x;_y=y;}// Implementación de propiedades:public?int?x{get{return?_x;}set{_x =valor;}}public?int?y{get{return?_y;}set{_y=value;}}clase?MainClass{static?void?PrintPoint(IPointp){Console.WriteLine(x={0},y ={1},p.x,p.y);}static?void?Main(){Pointp=newPoint(2,3);Console.Write( MyPoint:);PrintPoint(p);}Salida MyPoint:x=2,y =3