Лучшее руководство по C # Наследование в 2024 году. В этом руководстве вы можете изучить Базовые и производные классы,Инициализировать базовый класс,C # множественное наследование,
Наследование представляет собой объектно-ориентированное программирование является одним из наиболее важных понятий. Наследование позволяет определить класс на основе другого класса для определения класса, что делает создание и поддержание приложений гораздо проще. Но также способствует повторного использования кода и сократить время разработки.
При создании класса, программисты не нужно полностью переписывать новый элементы данных и функции-члены, вам нужно всего лишь создать новый класс, который наследует существующие члены класса могут быть. Существующийбазовый класс называется классом, новый класс называется производным классом.
Реализация идеи наследованияпринадлежащего (IS-A) отношения.Например, млекопитающеепринадлежит (IS-A) животные, собаки , принадлежащие (IS-A)из млекопитающих, и , следовательно ,относятся ксобаке(IS-A)животных.
Класс может быть получен из более чем одного класса или интерфейса, а это значит, что он может наследовать несколько базовых классов или интерфейсов от данных и функций.
Создать производный класс в синтаксисе C # выглядит следующим образом:
<Асесс-спецификатор> класс <base_class> { ru. } Класс <derived_class>: <base_class> { ru. }
Предположим, есть базовый класс 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 # не поддерживает множественное наследование.Тем не менее, вы можете использовать интерфейс для достижения множественного наследования. Следующая программа демонстрирует эту точку зрения:
с помощью системы; Пространство имен 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