Пока приходит в голове такое: объявить лист в суперклассе, в наследниках его заполнять. В каком-то внешнем классе (который не входит в эту иерархию) создать список наследников суперкласса, и потом в цикле всех их перебирать и добавлять элементы из их списков в общий список.
ЗЫ Единственное тут возникает вопрос с типами элементов. Если для всех товаров используется один класс (то есть у них у всех одинаковые характеристики), то можно сразу список и типизировать этим классом. Иначе можно сделать суперкласс дженериком, и в каждом наследнике определять тип товара; правда, тогда все типы товаров должны иметь общего наследника (или общий интерфейс), т.д.. ...