Grafik perbandingan
Dasar untuk perbandingan | Pribadi | Terlindung |
---|---|---|
Mewarisi properti ke kelas turunan | Kelas turunan tidak dapat mengakses anggota pribadi kelas dasar. | Kelas turunan dapat mengakses anggota yang dilindungi kelas dasar. |
Aksesibilitas | Anggota pribadi kelas tidak dapat diakses dari ruang kelas. | Anggota kelas yang dilindungi tidak dapat diakses dari ruang kelas kecuali kelas yang diturunkan dengan segera. |
Dapat diakses dari kelas sendiri | iya nih | iya nih |
Dapat diakses dari kelas turunan | Tidak | iya nih |
Dapat diakses dari luar | Tidak | Tidak |
Definisi Pribadi
Anggota kelas yang dinyatakan sebagai pribadi hanya dapat diambil di dalam kelas. Dengan kata lain, anggota yang dideklarasikan di bagian pribadi kelas hanya dapat diakses oleh fungsi teman dan fungsi anggota kelas. Anggota pribadi tidak dapat diperoleh ke kelas turunan secara langsung dan tidak dapat diakses di luar ruang lingkup kelas.
Program C ++ menunjukkan konsep penentu akses pribadi.
#include using namespace std; kelas A {pribadi: int i; publik: void get () {cout <> i; }}; kelas B: publik A {publik: void show () {i ++; cout << "\ n Nomor yang Anda masukkan setelah incrementcpp"> # sertakan menggunakan namespace std; class mammal {public: void mammalMethod (void) {cout << "Itu termasuk dalam kategori mamalia." <Dalam program yang diberikan di atas, satu objek dari kelas anak dibuat dengan nama "ob" dan fungsi anggota dari kelas induk dapat diakses melalui pemanggilan metode kelas anak "marine_mammalMethod". Meskipun, metode induk tidak dapat diakses secara langsung dengan objek "ob".
Definisi Dilindungi
Anggota kelas yang dinyatakan dilindungi dalam kelas hanya dapat diakses melalui fungsi anggota dan fungsi teman kelas. Anggota yang dilindungi ini tidak dapat diakses dari ruang kelas kecuali kelas anak (langsung berasal dari itu). Ini melayani tujuan terbatas dalam pewarisan dan mewarisi properti secara terbatas.
Program C ++ yang diberikan di bawah ini mengilustrasikan konsep penentu akses yang dilindungi.
#include using namespace std; class account1 {protected: int x, y; // dapat diakses oleh publik kelas turunan: void set (int a, int b) {x = a; y = b; } membatalkan show () {cout <Dalam contoh di atas, kelas anak mewarisi sifat-sifat kelas dasar karena anggota data dinyatakan sebagai publik atau dilindungi. Tidak akan mungkin jika x dan y telah dinyatakan sebagai pribadi di kelas dasar.
Perbedaan Kunci Antara Pribadi dan Dilindungi dalam C ++
- Kata kunci yang dilindungi dapat digunakan untuk membangun anggota kelas yang pribadi untuk kelas mereka tetapi dapat diwarisi dan digunakan oleh kelas turunan. Sebaliknya, ini tidak mungkin saat menggunakan pribadi, karena anggota pribadi tidak dapat diwarisi langsung ke kelas turunan.
- Ketika kelas dasar diwarisi menggunakan specifier akses pribadi, itu membuat semua anggota kelas dasar yang dilindungi dan publik, anggota pribadi dari kelas turunan. Sebagai lawan, ini tidak terjadi pada penentu akses yang dilindungi.
Kesimpulan
Pribadi dan terlindungi adalah penentu akses yang digunakan untuk mengatur visibilitas kelas dan anggotanya secara berbeda. Namun, dilindungi lebih fleksibel daripada pribadi.