Energy
education

сайт для тех, кто хочет изучать энергетику

21. Интерфейсы

Интерфейс определяется как синтаксический договор, которому все классы наследующие интерфейс должны следовать. Интерфейс определяет часть 'что' синтаксического договора, а производные классы определяют часть 'как' синтаксического договора.

Интерфейсы определяют свойства, методы и события, которые являются членами интерфейса. Интерфейсы содержат только декларации членов. За определения членов несет ответственность производные классы. Это часто помогает в обеспечении стандартной структуры производных классов.

Абстрактные классы в некоторой степени служат той же цели, однако, они в основном используются, когда лишь немногие методы должны быть объявлены в базовом классе, производный класс реализует функциональность.

Объявление интерфейсов

Интерфейсы объявляются с помощью ключевого слова interface. Это похоже на объявление класса. Интерфейс заявления являются открытыми по умолчанию. Ниже приведен пример описания интерфейса:

    
public interface ITransactions
{
   // члены интерфейса
   void showTransaction();
   double getAmount();
}
    

Пример

Следующий пример демонстрирует реализации вышеуказанного интерфейса:

    
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace InterfaceApplication
{
   public interface ITransactions
   {
      // члены интерфейса
      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("Номер сделки: {0}", tCode);
         Console.WriteLine("Дата: {0}", date);
         Console.WriteLine("Стоимость: {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();
      }
   }
}
    

Если приведенный выше код скомпилировать и выполнить, это приведет к следующему результату:

    
Номер сделки: 001
Дата: 8/10/2012
Стоимость: 78900
Номер сделки: 002
Дата: 9/10/2012
Стоимость: 451900