Прежде чем мы обсудим, как сделать ваш вопрос, я думаю, что мы должны немного уточнить оОП, который вы показываете в своем коде здесь.
В вашем примере класс foo является базовым классом и обладает функциональностью, свойствами, общими для всех типов foo. Например, Foo может быть деревом. Все деревья имеют ствол, корни, ветви и превращают солнечный свет в энергию.
Теперь ваши классы child1 и child2 были бы потомками foo и имели бы определенные вещи, которые в дополнение или отличались от foo. Например, child1 может быть Oak, который «является» деревом, но добавляет свойство leaf, свойство acorn и свойство hibernate.
Child1 и Child2 знают все, что нужно знать о foo, но foo не знает, что child1 и child2 существуют.
Теперь, если я понимаю, что вы пытаетесь сделать, вы реализуете это, создавая экземпляры классов child1 и child2 и вызывая любые методы, которые вам нужны для этих объектов, из другого класса или метода / функции.