// Пример добавления собственных параметров типа в производный класс, using System;
// Обобщенный базовый класс, class Gen
Т ob; // объявить переменную типа Т
// Передать конструктору ссылку типа Т. public Gen(T о) { ob = о;
}
// Возвратить значение переменной ob. public Т GetOb () {
return ob;
}
}
// Класс, производный от класса Gen. В этом классе // определяется второй параметр типа V. class Gen2
V ob2;
public Gen2(T о, V o2) : base (o) {
ob2 = o2;
}
public V Get0bj2() { return ob2;
' }
}
// Создать объект класса Gen2 с параметрами // типа string и int.
Gen2
new Gen2
Console.Write(x.GetOb());
Console.WriteLine(x.GetObj2());
}
}
Обратите внимание на приведенное ниже объявление классаGen2в данном варианте иерархии классов.
class Gen2
В этом объявленииТ— это тип, передаваемый базовому классу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
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
Console.Write(w.GetOb() + " ");
Console.WriteLine(w.GetNum());
}
}
Эта программа дает следующий результат.
Привет 47
В данной программе обратите внимание на то, как классGenнаследует от классаNonGenв следующем объявлении.
class Gen