Pada bagian sebelumnya, kita telah melihat metode definisi kelas turunan, menggunakan warisan publik. Sebenarnya ada tiga metode di sini, yaitu warisan publik , warisan pribadi , dan warisan yang dilindungi .
Perbedaan utama antara metode pewarisan yang berbeda terletak pada perubahan hak akses anggota dengan hak akses berbeda di kelas dasar ke kelas turunan. Diperkenalkan satu per satu di bawah ini.
1. Warisan umum:
Dalam modus pewarisan publik ciri-cirinya adalah sebagai berikut:
(1) Anggota publik di kelas dasar masih menjadi anggota publik di kelas turunan. Tentu saja fungsi anggota dan objek kelas turunan di kelas turunan dapat diakses.
(2) Anggota privat pada kelas dasar tidak dapat diakses oleh anggota kelas turunan atau objek kelas turunan.
(3) Anggota yang dilindungi pada kelas dasar masih merupakan tipe yang dilindungi pada kelas turunan dan dapat diakses melalui fungsi anggota kelas turunan, namun objek kelas turunan tidak dapat diakses.
2. Warisan pribadi:
Dalam hal pewarisan privat, hak akses ketiga anggota tipe publik, tipe privat, dan tipe terlindungi adalah sebagai berikut:
(1) Jenis kelas dasar yang bersifat publik dan yang dilindungi, setelah diserap oleh warisan privat dari kelas turunan, menjadi jenis kelas turunan yang bersifat privat, yaitu dapat diakses dalam fungsi anggota kelas tersebut dan tidak dapat diakses. diakses di luar kelas.
(2) Anggota privat kelas dasar tidak dapat diakses di kelas turunan, baik di dalam maupun di luar kelas.
Kita dapat melihat bahwa jika ini adalah derivasi privat, maka anggota privat dari kelas dasar tidak dapat lagi digunakan di kelas turunan atau bahkan subkelas turunan, dan tidak ada artinya, sehingga penggunaan seperti ini relatif jarang.
3. Lindungi warisan:
Warisan tipe terlindungi memiliki ciri-ciri sebagai berikut:
(1) Anggota publik dan anggota kelas dasar yang dilindungi merupakan anggota kelas turunan yang dilindungi.
(2) Anggota privat kelas dasar tidak dapat diakses langsung di kelas turunan.
Terlihat bahwa fungsi anggota pada kelas turunan dapat mengakses anggota publik dan anggota kelas dasar yang dilindungi, namun tidak dapat diakses di luar kelas melalui objek kelas turunan. Demikian pula, anggota privat di kelas dasar tidak dapat diakses melalui fungsi anggota di kelas turunan atau melalui objek kelas.
Berikut ini masih mengambil kode program jam dan jam alarm sebagai contoh untuk bereksperimen dengan berbagai jenis masalah akses yang berasal dari izin berbeda di kelas dasar. Untuk tipe publik, mereka dapat dipanggil dalam metode anggota kelas turunan atau di luar kelas. Kompilasi berjalan tanpa kesalahan sebagai berikut:
Namun untuk private member kita coba tambahkan sebaris kode lihat baris 41. Dalam fungsi anggota kelas turunan, variabel H yang diserap dari kelas dasar ditetapkan, dan kesalahan dilaporkan selama kompilasi. Lihat kotak merah dan perintah di bawah ini:
Anda dapat melihat pesan kesalahan "H adalah tipe pribadi".
Untuk tipe yang dilindungi, kami mencoba mendefinisikan variabel tipe yang dilindungi w di kelas dasar, dan mencoba untuk menetapkan dan menggunakannya dalam metode kelas turunan yang diwarisi secara publik. Anda dapat melihat situasinya pada gambar di bawah, yang dapat diakses sepenuhnya. Seperti yang ditunjukkan di bawah ini:
Untuk warisan privat, anggota tipe publik diakses di luar kelas:
Anda dapat bereksperimen sendiri untuk memverifikasi akses berbagai jenis anggota di bawah warisan publik.
Setelah mempelajari dan bereksperimen, dapat kami rangkum sebagai berikut:
1. Anggota pribadi dari kelas dasar tidak dapat diakses oleh fungsi anggota di dalam kelas turunan atau di luar kelas, terlepas dari izin turunannya.
2. Warisan pribadi, apa pun tipe asli kelas dasarnya, tidak dapat diakses melalui fungsi anggota di luar kelas turunan.
3. Hak akses anggota yang terserap oleh kelas turunan dari kelas dasar adalah hak akses yang paling rendah di kelas dasar dan hak turunan pada saat penurunan.
Dan berdasarkan kombinasi izin turunan, izin yang ditentukan di kelas dasar, dan waktu akses berbeda di dalam kelas turunan dan di luar kelas, tabel berikut dicantumkan:
warisan umum | warisan yang dilindungi | warisan pribadi | ||||
Kunjungi lokasi | di dalam kelas | Di luar kelas | di dalam kelas | Di luar kelas | di dalam kelas | Di luar kelas |
anggota publik | Bisa | Bisa | Bisa | Tidak bisa | Bisa | Tidak bisa |
melindungi anggota | Bisa | Tidak bisa | Bisa | Tidak bisa | Bisa | Tidak bisa |
anggota pribadi | Tidak bisa | Tidak bisa | Tidak bisa | Tidak bisa | Tidak bisa | Tidak bisa |