Mereka sering digunakan secara bergantian dalam diskusi, dan sering saya pikir mereka bekerja bersama untuk mencapai tujuan yang sama, dan sementara yang berikut ini mungkin tidak sepenuhnya akurat, mungkin memberikan beberapa perbedaan yang bermakna, jika perbedaan perlu dibuat:
Ketika berbicara tentang enkapsulasi, seringkali ini diimplementasikan sebagai mekanisme prosedural / fungsional. Ada beberapa jenis penjaga untuk keadaan yang mendasarinya, dan akses melalui penjaga memerlukan protokol tertentu yang harus diikuti untuk diberi akses (baca atau ubah status yang diinginkan). Enkapsulasi juga menawarkan kesempatan untuk efek samping terjadi karena akses (seperti perubahan status kaskade, atau pemberitahuan / peningkatan peristiwa / mengeluarkan sinyal ketika hal yang menarik dibaca atau diubah) sehingga tindakan tindak lanjut dapat dimulai. Sekali lagi, saya sering menganggap enkapsulasi sebagai konsep yang merupakan sesuatu yang diimplementasikan sebagai prosedur.
Saya melihat konsep menyembunyikan data serupa dengan tujuan enkapsulasi; Namun, mekanismenya struktural dan beroperasi pada level yang berbeda. Dalam praktiknya, alih-alih menyediakan mekanisme perlindungan dan efek samping melalui prosedur, negara dilindungi dan dipengaruhi melalui mekanisme struktural bahasa dan runtime. Tipe-tipe penjaga ini adalah klausa visibilitas, definisi tipe, pewarisan, dan sejenisnya. Efek samping yang dapat Anda manfaatkan dari objek yang dijaga secara struktural adalah lagi sesuatu yang bergantung pada bahasa dan runtime: mungkin aktivasi objek, jumlah referensi, atau sesuatu di sepanjang garis itu.