// Пример добавления собственных параметров типа в производный класс, using System;

// Обобщенный базовый класс, class Gen {

Т ob; // объявить переменную типа Т

// Передать конструктору ссылку типа Т. public Gen(T о) { ob = о;

}

// Возвратить значение переменной ob. public Т GetOb ()    {

return ob;

}

}

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

V ob2;

public Gen2(T о, V o2)    :    base    (o)    {

ob2 = o2;

}

public V Get0bj2() { return ob2;

' }

}

11Создать объект класса Gen2. class GenHierDemo2 { static void Main() {

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

Gen2 x =

new Gen2("Значение равно: ", 99);

Console.Write(x.GetOb());

Console.WriteLine(x.GetObj2());

}

}

Обратите внимание на приведенное ниже объявление классаGen2в данном варианте иерархии классов.

class Gen2 : Gen {

В этом объявленииТ— это тип, передаваемый базовому классуGen;аV— тип, характерный только для производного классаGen2.Он служит для объявления объектаоЬ2и в качестве типа, возвращаемого методомGetOb j 2(). В методеMain() создается объект классаGen2с параметромТтипаstringи параметромVтипаint.Поэтому код из приведенного выше примера дает следующий результат.

Значение равно: 99

Обобщенный производный класс

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

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

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 {

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

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