Abstraksi adalah prinsip menyembunyikan detail rumit sebuah sistem dan hanya menampilkan bagian penting yang perlu digunakan. Dengan abstraksi, pengguna sebuah komponen cukup tahu apa yang dilakukannya, bukan bagaimana cara kerjanya di dalam. Abstraksi membantu memecah masalah besar menjadi lapisan-lapisan yang lebih sederhana. Ini adalah salah satu pilar pemrograman berorientasi objek dan diterapkan lewat kelas abstrak atau antarmuka yang mendefinisikan perilaku tanpa mengungkap implementasinya. Konsep ini juga muncul di banyak level, dari fungsi kecil hingga layanan besar.
Abstraksi mengurangi kompleksitas, membuat kode lebih mudah dipahami, dan memungkinkan bagian dalam sistem diubah tanpa mengganggu bagian yang memakainya.
Sebuah fungsi bernama `kirimEmail()` bisa dipakai tanpa perlu tahu detail koneksi server atau protokol di baliknya; pemanggil cukup menyediakan alamat dan isi pesan.