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

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

// Пример необобщенного класса в качестве базового для // обобщенного производного класса.

using System;

// Необобщенный базовый класс, class NonGen { int num;

public NonGen(int i) { num = i;

}

public int GetNum { return num;

}

}

// Обобщенный производный класс, class Gen : NonGen {

T ob;

public Gen(T о, int i) : base (i)    {

ob = o;

}

// Возвратить значение переменной ob. public T GetOb { return ob;

}

}

// Создать объект класса Gen. class HierDemo3 {

static void Main {

// Создать объект класса Gen с параметром типа string.

Gen w = new Gen("Привет", 47);

Console.Write(w.GetOb + " ");

Console.WriteLine(w.GetNum);

}

}

Эта программа дает следующий результат.

Привет 47

В данной программе обратите внимание на то, как классGenнаследует от классаNonGenв следующем объявлении.

class Gen : NonGen {

КлассNonGenне является обобщенным, и поэтому аргумент типа для него не указывается. Это означает, что параметрТ,указываемый в объявлении обобщенного производного классаGen,не требуется для указания базового классаNonGenи даже не может в нем использоваться. Следовательно, классGenнаследует от классаNonGenобычным образом, т.е. без выполнения каких-то особых условий.

Переопределение виртуальных методов в обобщенном классе

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

// Пример переопределения виртуального метода в обобщенном классе, using System;

// Обобщенный базовый класс, class 'Gen { protected Т ob;

public Gen(T о) { ob = о;

}

// Возвратить значение переменной ob. Этот метод является виртуальным.

public virtual T GetOb    {

Console.Write("Метод GetOb из класса Gen" + " возвращает результат: "); return ob;

}

}

// Класс, производный от класса Gen. В этом классе // переопределяется метод GetOb . class Gen2 : Gen {

public Gen2 (T o) : base(o) { }

// Переопределить метод GetOb. public override T GetOb {

Console.Write("Метод GetOb из класса Gen2" + " возвращает результат: ") ; return ob;

}

}

// Продемонстрировать переопределение метода в обобщенном классе, class OverrideDemo { static void Main {

// Создать объект класса Gen с параметром типа int.

Gen iOb = new Gen(88);

// Здесь вызывается вариант метода GetOb из класса Gen.

Console.WriteLine(iOb.GetOb);

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

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

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

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

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

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

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

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

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