Читаем C# 4.0: полное руководство полностью

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

  }

}

class UncoverName {

  static void Main() {

    В ob = new В(1, 2);

    ob.Show();

  }

}

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

Член i в базовом классе: 1

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

Несмотря на то что переменная экземпляра i в производном классе В скрывает переменную i из базового класса А, ключевое слово base разрешает доступ к переменной i, определенной в базовом классе.

С помощью ключевого слова base могут также вызываться скрытые методы. Например, в приведенном ниже коде класс В наследует класс А и в обоих классах объявляется метод Show(). А затем в методе Show() класса В с помощью ключевого слова base вызывается вариант метода Show(), определенный в классе А.

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

using System;

class А {

  public int i = 0;

  // Метод Show() в классе A

  public void Show() {

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

  }

}

// Создать производный класс,

class В : А {

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

  public В(int a, int b) {

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

    i = b; // член 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(), определенный в базовом классе А .

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

В представленных до сих пор примерах программ использовались простые иерархии классов, состоявшие только из базового и производного классов. Но в 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 x) {

    Width = Height = x;

  }

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

Перейти на страницу:

Похожие книги

1С: Бухгалтерия 8 с нуля
1С: Бухгалтерия 8 с нуля

Книга содержит полное описание приемов и методов работы с программой 1С:Бухгалтерия 8. Рассматривается автоматизация всех основных участков бухгалтерии: учет наличных и безналичных денежных средств, основных средств и НМА, прихода и расхода товарно-материальных ценностей, зарплаты, производства. Описано, как вводить исходные данные, заполнять справочники и каталоги, работать с первичными документами, проводить их по учету, формировать разнообразные отчеты, выводить данные на печать, настраивать программу и использовать ее сервисные функции. Каждый урок содержит подробное описание рассматриваемой темы с детальным разбором и иллюстрированием всех этапов.Для широкого круга пользователей.

Алексей Анатольевич Гладкий

Программирование, программы, базы данных / Программное обеспечение / Бухучет и аудит / Финансы и бизнес / Книги по IT / Словари и Энциклопедии
1С: Управление торговлей 8.2
1С: Управление торговлей 8.2

Современные торговые предприятия предлагают своим клиентам широчайший ассортимент товаров, который исчисляется тысячами и десятками тысяч наименований. Причем многие позиции могут реализовываться на разных условиях: предоплата, отсрочка платежи, скидка, наценка, объем партии, и т.д. Клиенты зачастую делятся на категории – VIP-клиент, обычный клиент, постоянный клиент, мелкооптовый клиент, и т.д. Товарные позиции могут комплектоваться и разукомплектовываться, многие товары подлежат обязательной сертификации и гигиеническим исследованиям, некондиционные позиции необходимо списывать, на складах периодически должна проводиться инвентаризация, каждая компания должна иметь свою маркетинговую политику и т.д., вообщем – современное торговое предприятие представляет живой организм, находящийся в постоянном движении.Очевидно, что вся эта кипучая деятельность требует автоматизации. Для решения этой задачи существуют специальные программные средства, и в этой книге мы познакомим вам с самым популярным продуктом, предназначенным для автоматизации деятельности торгового предприятия – «1С Управление торговлей», которое реализовано на новейшей технологической платформе версии 1С 8.2.

Алексей Анатольевич Гладкий

Финансы / Программирование, программы, базы данных