В некоторых языках программирования вы можете моделировать genericy, используя наследование с членами абстрактного типа.Вот пример использования scala.Это должно быть понятно, даже если вы не знаете scala.
class Collection {
type T;
//all methods are using T for the contained type.
}
Я не уверен, но в c ++ type будет typedef.Следуя этому подходу, вы можете получить коллекцию с элементами типа A, подтипировав коллекцию и указав тип T для A:
class IntCollection extends Collection {
type T = Int;
//...
}
. Это решение имеет некоторые недостатки по отношению к шаблонам или шаблонам, но также имеет свои преимущества.Если вам интересно, подумайте о прочтении этого: http://www.artima.com/weblogs/viewpost.jsp?thread=270195 Элементы абстрактного типа в сравнении с параметрами общего типа в scala.Опять же, вам не нужно знать Scala, чтобы понять пост.edit: процитировать только одно предложение: по крайней мере, в принципе, мы можем выразить каждый вид параметризации как форму объектно-ориентированной абстракции.Надеюсь, что это помогло