Главная Случайная страница


Полезное:

Как сделать разговор полезным и приятным Как сделать объемную звезду своими руками Как сделать то, что делать не хочется? Как сделать погремушку Как сделать так чтобы женщины сами знакомились с вами Как сделать идею коммерческой Как сделать хорошую растяжку ног? Как сделать наш разум здоровым? Как сделать, чтобы люди обманывали меньше Вопрос 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; Нарушение авторских прав



mydocx.ru - 2015-2024 year. (0.006 sec.) Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав - Пожаловаться на публикацию