ich weiß, dass es bereits eine akzeptierte Antwort, aber ich wollte es noch eine werfen:
OpenGL/DirectX
Keines dieser APIs sind vollständige Implementierungen (obwohl DirectX sicherlich ein bisschen kopflastig in dieser Hinsicht ist), sondern generische Methoden zur Übertragung von Renderbefehlen an eine Grafikkarte.
Die Kartenanbieter sind diejenigen, die die Implementierung (Treiber) für eine bestimmte Karte bieten, die in vielen Fällen sehr Hardware-spezifisch ist, aber Sie als Benutzer nie kümmern, dass ein Benutzer ein GeForce ABC und das andere ausführt eine Radeon XYZ, weil die genaue Implementierung hinter der High-Level-API versteckt ist. Wäre es nicht, müssten Sie einen Code-Pfad in Ihren Spielen für jede Karte auf dem Markt haben, die Sie unterstützen wollten, was vom ersten Tag an nicht mehr zu verwalten wäre. Ein weiterer großer Pluspunkt bei diesem Ansatz ist, dass Nvidia/ATI ein neuere, effizientere Version ihrer Treiber und Sie profitieren automatisch ohne Aufwand von Ihrer Seite.
Das gleiche Prinzip gilt für Sound, Netzwerk, Maus, Tastatur ... im Grunde jede Komponente Ihres Computers. Unabhängig davon, ob die Kapselung auf der Hardwareebene oder in einem Softwaretreiber erfolgt, werden irgendwann alle Geräteeigenschaften ausgeblendet, damit Sie jede Tastatur behandeln können, zum Beispiel nur eine Tastatur und keine Microsoft Ergonomic Media Explorer Deluxe Version 2
Wenn man es so betrachtet, wird schnell klar, dass ohne irgendeine Art von Verkapselung/Abstraktion Computer, wie wir sie heute kennen, einfach überhaupt nicht funktionieren würden. Ist das brilliant genug für dich?
Ich weiß nicht, dass ich so weit gehen würde zu sagen "ohne sich darum kümmern zu müssen, dass der Rest des Codes nicht kompiliert wird". Sie können kompilieren, während Sie nur private Mitglieder ändern. Der Vorteil liegt eher darin, die Interna einer Klasse komplett neu schreiben zu können, solange Sie die externe Schnittstelle nicht ändern. Dies ist ideal für bestimmte Arten von Optimierungen. – Toji