» » » » Герберт Шилдт - C# 4.0 полное руководство - 2011


Авторские права

Герберт Шилдт - C# 4.0 полное руководство - 2011

Здесь можно скачать бесплатно "Герберт Шилдт - C# 4.0 полное руководство - 2011" в формате fb2, epub, txt, doc, pdf. Жанр: Прочая старинная литература. Так же Вы можете читать книгу онлайн без регистрации и SMS на сайте LibFox.Ru (ЛибФокс) или прочесть описание и ознакомиться с отзывами.
Герберт Шилдт - C# 4.0 полное руководство - 2011
Рейтинг:
Название:
C# 4.0 полное руководство - 2011
Издательство:
неизвестно
Год:
неизвестен
ISBN:
нет данных
Скачать:

99Пожалуйста дождитесь своей очереди, идёт подготовка вашей ссылки для скачивания...

Скачивание начинается... Если скачивание не началось автоматически, пожалуйста нажмите на эту ссылку.

Вы автор?
Жалоба
Все книги на сайте размещаются его пользователями. Приносим свои глубочайшие извинения, если Ваша книга была опубликована без Вашего на то согласия.
Напишите нам, и мы в срочном порядке примем меры.

Как получить книгу?
Оплатили, но не знаете что делать дальше? Инструкция.

Описание книги "C# 4.0 полное руководство - 2011"

Описание и краткое содержание "C# 4.0 полное руководство - 2011" читать бесплатно онлайн.








// Вызвать скрытый метод.

using System;

class А {

public int i = 0;

11 Метод Show() в классе A public void Show() {

Console.WriteLine("Член i в базовом классе: " + i);

}

}

// Создать производный класс, class В : А {

new int i; // этот член скрывает член i из класса А

public В(int a, int b) {

base.i = а; // здесь обнаруживается скрытый член из класса А

i = Ь; // член i из класса В

}

// Здесь скрывается метод Show() из класса А. Обратите // внимание на применение ключевого слова new. new public void Show() {

base.Show (); // здесь вызывается метод Show() из класса А

// далее выводится член i из класса В

Console.WriteLine("Член i в производном классе: " + i);

}

}

class UncoverName { static void Main() {

В ob = new В (1, 2); ob.Show ();

}

}

Выполнение этого кода приводит к следующему результату.

Член i в базовом классе: 1 Член i в производном классе: 2

Как видите, в выражении base. Show () вызывается вариант метода Show () из базового класса.

Обратите также внимание на следующее: ключевое слово new используется в приведенном выше коде с целью сообщить компилятору о том, что метод Show (), вновь объявляемый в производном классе В, намеренно скрывает другой метод Show (), определенный в базовом классе А.

Создание многоуровневой иерархии классов

В представленных до сих пор примерах программ использовались простые иерархии классов, состоявшие только из базового и производного классов. Но в C# мож

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

Для того чтобы показать, насколько полезной может оказаться многоуровневая иерархия классов, рассмотрим следующий пример программы. В ней производный класс Triangle служит в качестве базового для создания другого производного класса — ColorTriangle. При этом класс ColorTriangle наследует все характерные особенности, а по существу, члены классов Triangle и TwoDShape, к которым добавляется поле color, содержащее цвет треугольника.

// Пример построения многоуровневой иерархии классов.

using System;

class TwoDShape { double pri_width; double pri_height;

// Конструктор, используемый по умолчанию, public TwoDShape()    {

Width = Height = 0.0;

}

// Конструктор для класса TwoDShape. public TwoDShape(double w, double h) {

Width = w;

Height = h;

}

// Сконструировать объект равной ширины и высоты, public TwoDShape(double х) {

Width = Height = x;

}

// Свойства ширины и высоты объекта, public double Width {

get {    return pri_width; }

set {    pri_width = value < 0 ? -value :    value; }

}

public double Height {

get {    return pri_height; }

set {    pri_height = value < 0 ?    -value    : value; }

}

public void ShowDim() {

Console.WriteLine("Ширина и высота равны " +

Width + " и " + Height);

}

// Класс для треугольников, производный от класса TwoDShape. class Triangle : TwoDShape {

string Style; // закрытый член класса

/* Конструктор, используемый по умолчанию.

Автоматически вызывает конструктор, доступный по умолчанию в классе TwoDShape. */ public Triangle ()    {

Style = "null";

}

// Конструктор.

public Triangle(string s, double w, double h) : base(w, h) { Style = s;

}

// Сконструировать равнобедренный треугольник, public Triangle(double x) : base(x)    {

Style = "равнобедренный";

}

// Возвратить площадь треугольника, public double Area() {

return Width * Height / 2;

}

// Показать тип треугольника, public void ShowStyle() {

Console.WriteLine("Треугольник " + Style);

}

}

// Расширить класс Triangle, class ColorTriangle : Triangle { string color;

fc

public ColorTriangle(string c, string s,

double w, double h) : base(s, w, h) {

color = c;

}

// Показать цвет треугольника, public void ShowColor() {

Console.WriteLine("Цвет " + color);

}

}

class Shapes6 {

static void Main() {

ColorTriangle tl =

new ColorTriangle("синий", "прямоугольный", 8.0, 12.0); ColorTriangle t2 =

new ColorTriangle("красный", "равнобедренный", 2.0, 2.0);

Console.WriteLine("Сведения об объекте tl: "); tl.ShowStyle(); tl. ShowDinv() ; tl.ShowColor ();

Console .WriteLine ("Площадь равна " + tl.AreaO);

Console.WriteLine () ;

Console.WriteLine("Сведения об объекте t2: "); t2.ShowStyle(); t2.ShowDim(); t2.ShowColor() ;

Console.WriteLine("Площадь равна " + t2.Area());

}

}

При выполнении этой программы получается следующей результат.

Сведения об объекте tl:

Треугольник прямоугольный Ширина и высота равны 8 и 12 Цвет синий Площадь равна 48

Сведения об объекте t2:

Треугольник равнобедренный Ширина и высота равны 2 и 2 Цвет красный Площадь равна 2

Благодаря наследованию в классе ColorTriangle могут использоваться определенные ранее классы Triangle и TwoDShape, к элементам которых добавляется лишь та информация, которая требуется для конкретного применения данного класса. В этом отчасти и состоит ценность наследования, поскольку оно допускает повторное использование кода.

Приведенный выше пример демонстрирует еще одно важное положение: ключевое слово base всегда обозначает ссылку на конструктор ближайшего по иерархии базового класса. Так, ключевое слово base в классе ColorTriangle обозначает вызов конструктора из класса Triangle, а ключевое слово base в классе Triangle — вызов конструктора из класса TwoDShape. Если же в иерархии классов конструктору базового класса требуются параметры, то все производные классы должны предоставлять эти параметры вверх по иерархии, независимо от того, требуются они самому производному классу или нет.

Порядок вызова конструкторов

В связи с изложенными выше в отношении наследования и иерархии классов может возникнуть следующий резонный вопрос: когда создается объект производного класса и какой конструктор выполняется первым — тот, что определен в производном классе, или же тот, что определен в базовом классе? Так, если имеется базовый класс А и производный класс В, то вызывается ли конструктор класса А раньше конструктора класса В? Ответ на этот вопрос состоит в том, что в иерархии классов конструкторы вызываются по порядку выведения классов: от базового к производному. Более того, этот порядок остается неизменным независимо от использования ключевого слова base. Так, если ключевое слово base не используется, то выполняется конструктор по умолчанию, т.е. конструктор без параметров. В приведенном ниже примере программы демонстрируется порядок вызова и выполнения конструкторов.

// Продемонстрировать порядок вызова конструкторов.

using System;

// Создать базовый класс, class А {

public А()    {

Console.WriteLine("Конструирование класса А.");

}

}

// Создать класс, производный от класса А. class В : А { public В()    {

Console.WriteLine("Конструирование класса В.");

}

}

/

// Создать класс, производный от класса В. class С : В { public С()    {

Console.WriteLine("Конструирование класса С.");

}

}

class OrderOfConstruction { static void Main() {

С с = new С();

}

}

Вот к какому результату приводит выполнение этой программы.

Конструирование класса А.

Конструирование класса В.

Конструирование класса С.

Как видите, конструкторы вызываются по порядку выведения их классов.


На Facebook В Твиттере В Instagram В Одноклассниках Мы Вконтакте
Подписывайтесь на наши страницы в социальных сетях.
Будьте в курсе последних книжных новинок, комментируйте, обсуждайте. Мы ждём Вас!

Похожие книги на "C# 4.0 полное руководство - 2011"

Книги похожие на "C# 4.0 полное руководство - 2011" читать онлайн или скачать бесплатно полные версии.


Понравилась книга? Оставьте Ваш комментарий, поделитесь впечатлениями или расскажите друзьям

Все книги автора Герберт Шилдт

Герберт Шилдт - все книги автора в одном месте на сайте онлайн библиотеки LibFox.

Уважаемый посетитель, Вы зашли на сайт как незарегистрированный пользователь.
Мы рекомендуем Вам зарегистрироваться либо войти на сайт под своим именем.

Отзывы о "Герберт Шилдт - C# 4.0 полное руководство - 2011"

Отзывы читателей о книге "C# 4.0 полное руководство - 2011", комментарии и мнения людей о произведении.

А что Вы думаете о книге? Оставьте Ваш отзыв.