Hallo Richard,
um bei deinem Beispiel zu bleiben:
Ein Auto kann man in der Regel fahren, und dafür ist es eigentlich egal, was für ein Auto das ist, ob VW oder Mazda oder was-weiss-ich (über den Komfort reden wir hier nicht!)
Also wäre es schön, wenn du einfach sagen könntest: Auto.fahre(), ohne wissen zu müssen ob das nun ein VW oder Audi ist. Wenn nun die einzelnen Autotypen das Interface Auto implementieren sagen sie nach außen: ich habe die Methode fahre().
Wenn du jetzt zur Garage (= Liste von verschiedenen Autos) gehst und einfach das erste nimmst, kannst du zu dem einfach fahre() sagen und dir sicher sein das da was passiert. Was für ein Auto das konkret ist, muss dich in diesem Zusammenhang nicht interessieren, es reicht zu wissen, das es ein Auto ist. Das erspart die lange Verzweigungen der Art:
Wenn es ein VW ist mache VW.fahre()
Wenn es ein Mazda ist mache Mazda.fahre() …
Ich hoffe ich habe die Verwirrung nicht noch vergrößert 
Daniel