Latest web development tutorials

C # полиморфизм

Полиморфизм означает , что существует множество форм.В объектно-ориентированного программирования парадигмы, полиморфизм часто выражается как "один интерфейс, несколько функций."

Полиморфизм может быть статическим или динамическим.Статический полиморфизм в функции отклика происходит во время компиляции.Вдинамическом полиморфизма, функция отклика происходит во время выполнения.

Статический полиморфизм

Во время компиляции, функции и механизм подключения объектов называется раннее связывание, также известный как статическое связывание. C # предлагает два метода для реализации статического полиморфизма. К ним относятся:

  • перегрузка функций
  • Оператор Перегрузки

Перегрузка операторов будет обсуждаться в следующем разделе мы рассмотрим следующую функцию перегрузки.

перегрузка функций

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

Следующий пример демонстрирует несколько из той же функциипечати (), для печати различных типов данных:

с помощью системы;
Пространство имен PolymorphismApplication
{
   класс PrintData
   {
      недействительным печати (INT I)
      {
         Console.WriteLine ( "Печать INT: {0}", я);
      }

      недействительным печати (двойной е)
      {
         Console.WriteLine ( "Печать с плавающей точкой: {0}", е);
      }

      недействительным печати (строка s)
      {
         Console.WriteLine ( "Печать строки: {0}", s);
      }
      статической силы основных (String [] агдз)
      {
         PrintData р = новый PrintData ();
         // Вызывать печать, чтобы напечатать целую p.print (5);
         // Вызывать печать для печати флоат p.print (500.263);
         // Вызываем печать на печать строки p.print ( "Hello C ++");
         Console.ReadKey ();
      }
   }
}

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

Печать INT: 5
Печать с плавающей точкой: 500,263
Печать строка: Hello C ++

Динамический полиморфизм

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

Обратите внимание, что следующие несколько правил для абстрактных классов:

  • Вы не можете создать экземпляр абстрактного класса.
  • Вы не можете объявить абстрактный метод вне абстрактного класса.
  • Размещая перед ключевыми словами определения классазапечатанных, класс может быть объявлен как запечатанных классов.Когда класс объявлензапечатан, он не может быть унаследован.Абстрактный класс не может быть объявлен как запечатаны.

Следующая программа демонстрирует абстрактный класс:

с помощью системы;
Пространство имен PolymorphismApplication
{
   абстрактный класс Shape
   {
      общественного абстрактного область Int ();
   }
   Класс Прямоугольник: Форма
   {
      частная длина INT;
      частная ширина INT;
      общественный прямоугольник (INT = 0, Int Ь = 0)
      {
         длина = а;
         ширина = Ь;
      }
      INT зона общественного переопределение ()
      { 
         Console.WriteLine ( "Площадь прямоугольника класса:");
         возврат (ширина * длина); 
      }
   }

   класс RectangleTester
   {
      статической силы основных (String [] агдз)
      {
         Прямоугольник г = новый прямоугольник (10, 7);
         двойной а = r.area ();
         Console.WriteLine ( "Размер: {0}", а);
         Console.ReadKey ();
      }
   }
}

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

Прямоугольник Класс Размер:
Площадь: 70

Когда функция определена в потребностях класса , которые будут реализованы в производном классе, вы можете использоватьвиртуальные методы.Виртуальный метод объявляется с помощью ключевого словавиртуальной.Виртуальные методы могут быть реализованы по-разному в различных наследуемых классов. Вызовы виртуальных методов происходит во время выполнения.

Динамический полиморфизм достигается за счетабстрактных классов и виртуальных методов.

Следующая программа демонстрирует эту точку зрения:

с помощью системы;
Пространство имен PolymorphismApplication
{
   класс Shape 
   {
      защищенный INT ширина, высота;
      Форма общественного (INT = 0, Int Ь = 0)
      {
         ширина = а;
         высота = Ь;
      }
      общественная область виртуальной Int ()
      {
         Console.WriteLine ( "родительской области:");
         возвращает 0;
      }
   }
   Класс Прямоугольник: Форма
   {
      общественный прямоугольник (INT = 0, Int Ь = 0): основание (а, б)
      {

      }
      INT зона общественного переопределение ()
      {
         Console.WriteLine ( "Площадь прямоугольника класса:");
         возврата (ширина * высота); 
      }
   }
   Класс Triangle: Форма
   {
      общественный треугольник (INT = 0, Int Ь = 0): основание (а, б)
      {
      
      }
      INT зона общественного переопределение ()
      {
         Console.WriteLine ( "класс площадь треугольника:");
         возврата (ширина * высота / 2); 
      }
   }
   класс вызывающего абонента
   {
      общественного недействительными CallArea (Форма ш)
      {
         Int А;
         а = sh.area ();
         Console.WriteLine ( "Размер: {0}", а);
      }
   }  
   класс Tester
   {
      
      статической силы основных (String [] агдз)
      {
         Caller с = новый Caller ();
         Прямоугольник г = новый прямоугольник (10, 7);
         Треугольник Т = новый треугольник (10, 5);
         c.CallArea (г);
         c.CallArea (т);
         Console.ReadKey ();
      }
   }
}

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

Прямоугольник Класс Размер:
Площадь: 70
Класс Triangle площадь:
Площадь: 25