Вход/Регистрация
C# 4.0 полное руководство - 2011
вернуться

Шилдт Герберт

Шрифт:

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; // закрытый член класса

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

  • Читать дальше
  • 1
  • ...
  • 154
  • 155
  • 156
  • 157
  • 158
  • 159
  • 160
  • 161
  • 162
  • 163
  • 164
  • ...

Ебукер (ebooker) – онлайн-библиотека на русском языке. Книги доступны онлайн, без утомительной регистрации. Огромный выбор и удобный дизайн, позволяющий читать без проблем. Добавляйте сайт в закладки! Все произведения загружаются пользователями: если считаете, что ваши авторские права нарушены – используйте форму обратной связи.

Полезные ссылки

  • Моя полка

Контакты

  • chitat.ebooker@gmail.com

Подпишитесь на рассылку: