In an oop language, I could do the following:
I can define an interface Foo with a function F(). I then define two classes Bar1 and Bar2 implementing this interface. I can then create an array of Foo called say fooArray. I can then call F in any element without knowing if it is Bar1 or Bar2.
I want to do the same in solidity (within a different contract FooBar), or something similar. Is that possible? Would I then create an array of interfaces and fill it with different contracts? Would that mean every contract will get its own address? That seems a bit unnecessary since I only need to access the contracts via the array, not via their addresses, ie I want the array to behave as much as possible like an array of instances of classes in oop.