Полезное:
Как сделать разговор полезным и приятным
Как сделать объемную звезду своими руками
Как сделать то, что делать не хочется?
Как сделать погремушку
Как сделать так чтобы женщины сами знакомились с вами
Как сделать идею коммерческой
Как сделать хорошую растяжку ног?
Как сделать наш разум здоровым?
Как сделать, чтобы люди обманывали меньше
Вопрос 4. Как сделать так, чтобы вас уважали и ценили?
Как сделать лучше себе и другим людям
Как сделать свидание интересным?
Категории:
АрхитектураАстрономияБиологияГеографияГеологияИнформатикаИскусствоИсторияКулинарияКультураМаркетингМатематикаМедицинаМенеджментОхрана трудаПравоПроизводствоПсихологияРелигияСоциологияСпортТехникаФизикаФилософияХимияЭкологияЭкономикаЭлектроника
|
Основы наследования
Поддержка наследования в C# состоит в том, что в объявление одного класса разрешается вводить другой класс. Для этого при объявлении производного класса указывается базовый класс. Рассмотрим для начала простой пример. Ниже приведен класс TwoDShape, содержащий ширину и высоту двухмерного объекта, например квадрата, прямоугольника, треугольника и т.д. //клас для двумерных обьектов. class TwoDShape { public double Width; public double Heigth; public void ShowDim() { Console.WriteLine("Ширина и высота равны " + Width + " и " + Heigth); } } Класс TwoDShape может стать базовым, т.е. отправной точкой для создания классов, описывающих конкретные типы двумерных объектов. //пример простой иерарзии класов using System; //клас для двумерных обьектов. class TwoDShape { public double Width; public double Heigth; public void ShowDim() { Console.WriteLine("Ширина и высота равны " + Width + " и " + Heigth); } } //клас Triangle, производный от класса TwoDShape. class Triangle: TwoDShape { public string Style; //тип треугольника //возвратить площадь треугольника. public double Area() { return Width * Heigth / 2; } //показать тип треугольника. public void ShowStyle() { Console.WriteLine("Треугольник " + Style); } } class Shapes { static void Main() { Triangle t1 = new Triangle(); Triangle t2 = new Triangle(); t1.Width = 4.0; t1.Heigth = 4.0; t1.Style = "равнобедренный"; t2.Width = 8.0; t2.Heigth = 12.0; t2.Style = "прямоугольный"; Console.WriteLine("Сведения об обьекте t1: "); t1.ShowStyle(); t1.ShowDim(); Console.WriteLine("Площадь равна " + t1.Area()); Console.WriteLine(); Console.WriteLine("Сведения об обьекте t2: "); t2.ShowStyle(); t2.ShowDim(); Console.WriteLine("Площадь равна " + t2.Area()); } } В классе Triangle создается особый тип объекта класса TwoDShape (в данном случае — треугольник). Кроме того, в класс Triangle входят все члены класса TwoDShape, к которым, в частности, добавляются методы Area() и ShowStyle(). Обратите внимание на синтаксис, используемый в классе Triangle для наследования класса TwoDShape. class Triangle: TwoDShape Этот синтаксис может быть обобщен. Всякий раз, когда один класс наследует от другого, после имени базового класса указывается имя производного класса, отделяемое двоеточием. В класс Triangle входят все члены его базового класса TwoDShape, и поэтому в нем переменные Width и Height доступны для метода Area(). Кроме того, объекты t1 и t2 в методе Main() могут обращаться непосредственно к переменным Width и Height, как будто они являются членами класса Triangle. Несмотря на то что класс TwoDShape является базовым для класса Triangle, в то же время он представляет собой совершенно независимый и самодостаточный класс. Разумеется, объект класса TwoDShape никак не связан с любым из классов, производных от класса TwoDShape, и вообще не имеет к ним доступа. Ниже приведена общая форма объявления класса, наследующего от базового класса. class имя_производного_класса: имя_базового_класса { // тело класса } Для любого производного класса можно указать только один базовый класс. Тем не менее можно создать иерархию наследования, в которой производный класс становится базовым для другого производного класса. Главное преимущество наследования заключается в следующем: как только будет создан базовый класс, в котором определены общие для множества объектов атрибуты, он может быть использован для создания любого числа более конкретных производных классов. А в каждом производном классе может быть точно выстроена своя собственная классификация. В качестве примера ниже приведен еще один класс, производный от класса TwoDShape и инкапсулирующий прямоугольники. // Класс для прямоугольников, производный от класса TwoDShape. class Rectangle: TwoDShape { // Возвратить логическое значение true, если прямоугольник является квадратом. public bool IsSquare() { if (Width == Height) return true; return false; } // Возвратить площадь прямоугольника. public double Area() { return Width * Height; } } Date: 2015-09-02; view: 358; Нарушение авторских прав |