C #: interfaces

Una interfaz se define como un contrato sintáctico que deben seguir todas las clases que heredan la interfaz. La interfaz define el'what' parte del contrato sintáctico y las clases derivadas definen el 'how' parte del contrato sintáctico.

Las interfaces definen propiedades, métodos y eventos, que son los miembros de la interfaz. Las interfaces contienen solo la declaración de los miembros. Es responsabilidad de la clase derivada definir los miembros. A menudo ayuda a proporcionar una estructura estándar que seguirían las clases derivadas.

Las clases abstractas hasta cierto punto tienen el mismo propósito, sin embargo, se usan principalmente cuando la clase base debe declarar solo unos pocos métodos y la clase derivada implementa las funcionalidades.

Declaración de interfaces

Las interfaces se declaran utilizando la palabra clave interfaz. Es similar a la declaración de clases. Las declaraciones de interfaz son públicas de forma predeterminada. A continuación se muestra un ejemplo de una declaración de interfaz:

public interface ITransactions {
   // interface members
   void showTransaction();
   double getAmount();
}

Ejemplo

El siguiente ejemplo demuestra la implementación de la interfaz anterior:

using System.Collections.Generic;
using System.Linq;
using System.Text;
using System;

namespace InterfaceApplication {
   
   public interface ITransactions {
      // interface members
      void showTransaction();
      double getAmount();
   }
   public class Transaction : ITransactions {
      private string tCode;
      private string date;
      private double amount;
      
      public Transaction() {
         tCode = " ";
         date = " ";
         amount = 0.0;
      }
      public Transaction(string c, string d, double a) {
         tCode = c;
         date = d;
         amount = a;
      }
      public double getAmount() {
         return amount;
      }
      public void showTransaction() {
         Console.WriteLine("Transaction: {0}", tCode);
         Console.WriteLine("Date: {0}", date);
         Console.WriteLine("Amount: {0}", getAmount());
      }
   }
   class Tester {
     
      static void Main(string[] args) {
         Transaction t1 = new Transaction("001", "8/10/2012", 78900.00);
         Transaction t2 = new Transaction("002", "9/10/2012", 451900.00);
         
         t1.showTransaction();
         t2.showTransaction();
         Console.ReadKey();
      }
   }
}

Cuando se compila y ejecuta el código anterior, produce el siguiente resultado:

Transaction: 001
Date: 8/10/2012
Amount: 78900
Transaction: 002
Date: 9/10/2012
Amount: 451900