В общем, есть два базовых класса. element, frame. От класса element наследуется класс a1 и класс a2. У классов a1 и a2 могут быть принципиально разные собственные методы. Класс frame содержит в себе несколько полей, в каждый из который пихается что-либо производное от element. Так вопрос - как сделать так, чтобы frame мог принять и a1 и a2, и выполнять как их собственные методы, так и унаследованные от element. Подозреваю, что это скорее всего как-то просто делается через приведение типов, но я ещё слабовато понимаю ООП