Latest web development tutorials

C # Наследование

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

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

Реализация идеи наследованияпринадлежащего (IS-A) отношения.Например, млекопитающеепринадлежит (IS-A) животные, собаки , принадлежащие (IS-A)из млекопитающих, и , следовательно ,относятся ксобаке(IS-A)животных.

Базовые и производные классы

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

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

<Асесс-спецификатор> класс <base_class>
{
 ...
}
Класс <derived_class>: <base_class>
{
 ...
}

Предположим, есть базовый класс Shape, который является производным классом Rectangle:

с помощью системы;
Пространство имен InheritanceApplication
{
   класс Shape 
   {
      общественного недействительными setWidth (Int W)
      {
         ширина = ш;
      }
      общественного недействительными setHeight (INT ч)
      {
         высота = ч;
      }
      защищенный ширину INT;
      защищенная высота INT;
   }

   // Производный класс класса Прямоугольник: Форма
   {
      общественное INT GetArea ()
      { 
         возврата (ширина * высота); 
      }
   }
   
   класс RectangleTester
   {
      статической силы основных (String [] агдз)
      {
         Прямоугольник Прямоугольник = новый прямоугольник ();

         Rect.setWidth (5);
         Rect.setHeight (7);

         // Печать площадь объекта Console.WriteLine ( "Общая площадь: {0}", Rect.getArea ());
         Console.ReadKey ();
      }
   }
}

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

Общая площадь: 35

Инициализировать базовый класс

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

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

с помощью системы;
Пространство имен RectangleApplication
{
   класс Прямоугольник
   {
      // Переменные-члены защищены двойной длины;
      защищенный двойной ширины;
      общественный прямоугольник (двойной л, двойной вес)
      {
         длина = л;
         ширина = ш;
      }
      общественный двойной GetArea ()
      {
         вернуться длина * ширина;
      }
      общественного недействительными Дисплей ()
      {
         Console.WriteLine ( "Длина: {0}", длина);
         Console.WriteLine ( "ширина: {0}", ширина);
         Console.WriteLine ( "Размер: {0}", GetArea ());
      }
   } // Конец класса Rectangle  
   Класс Столешница: Прямоугольник
   {
      частные двойной стоимости;
      Столешница общественности (двойной л, двойной вес): основание (л, ж)
      {}
      общественный двойной GetCost ()
      {
         двойная стоимость;
         Стоимость = GetArea () * 70;
         возврата стоимости;
      }
      общественного недействительными Дисплей ()
      {
         base.Display ();
         Console.WriteLine ( "Стоимость: {0}", GetCost ());
      }
   }
   класс ExecuteRectangle
   {
      статической силы основных (String [] агдз)
      {
         Столешница т = новый Столешница (4.5, 7.5);
         t.Display ();
         Console.ReadLine ();
      }
   }
}

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

Длина: 4,5
Ширина: 7,5
Площадь: 33,75
Стоимость: 2362,5

C # множественное наследование

C # не поддерживает множественное наследование.Тем не менее, вы можете использовать интерфейс для достижения множественного наследования. Следующая программа демонстрирует эту точку зрения:

с помощью системы;
Пространство имен InheritanceApplication
{
   класс Shape 
   {
      общественного недействительными setWidth (Int W)
      {
         ширина = ш;
      }
      общественного недействительными setHeight (INT ч)
      {
         высота = ч;
      }
      защищенный ширину INT;
      защищенная высота INT;
   }

   // Базовый класс PaintCost
   открытый интерфейс PaintCost 
   {
      INT getCost (INT область);

   }
   // Производный класс класса Прямоугольник: Форма, PaintCost
   {
      общественное INT GetArea ()
      {
         возврата (ширина * высота);
      }
      общественное INT getCost (INT область)
      {
         возвращение район * 70;
      }
   }
   класс RectangleTester
   {
      статической силы основных (String [] агдз)
      {
         Прямоугольник Прямоугольник = новый прямоугольник ();
         INT область;
         Rect.setWidth (5);
         Rect.setHeight (7);
         площадь = Rect.getArea ();
         // Печать площадь объекта Console.WriteLine ( "Общая площадь: {0}", Rect.getArea ());
         Console.WriteLine ( "Paint Общая стоимость: $ {0}", Rect.getCost (область));
         Console.ReadKey ();
      }
   }
}

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

Общая площадь: 35
Краска Общая стоимость: $ 2450