To reduce coupling, extract interfaces from the classes (some version of Visual Studio can do that), and use the interfaces in the parent class.
Nowadays, Dependency Injection is a common way to get the child objects into the parent class, typically via the constructor (in its signature, you'll use the interfaces instead of the concrete classes). The child objects can also be injected into public properties of the parent class (most DI containers support this feature).
Some years ago, "Service Location" was proposed see
http://www.martinfowler.com/articles/injection.html[
^]): the parent class knows some "ServiceLocator" (often a DI container), and creates its childs via that ServiceLocator. Some people think that that is bad practise and even call it an anti-pattern. On the other hand, this approach is easy to understand and looks stright forward.