Disyorkan, 2024

Pilihan Editor

Perbezaan Antara Warisan Tunggal dan Pelbagai

Pewarisan sangat menyokong konsep kebolehgunaan seperti kelas baru yang dicipta menggunakan semula sifat-sifat yang sudah sedia ada. Penyiasat akses menentukan cara ahli kelas asas akan diwarisi oleh kelas asal. Terdapat banyak cara untuk mencapai warisan tunggal, berganda, Hierarki, Multilevel, Hybrid. Manakala topik perbincangan utama kami adalah perbezaan antara warisan tunggal dan berganda. Dalam warisan tunggal, kita hanya mempunyai satu kelas asas yang diwarisi oleh hanya satu kelas yang diturunkan. Dalam pelbagai pusaka, kita mempunyai lebih daripada dua kelas asas yang diwarisi sepenuhnya oleh hanya satu kelas yang diturunkan.


Carta Perbandingan

Asas untuk PerbandinganWarisan TunggalPelbagai warisan
AsasKelas yang berasal mewarisi kelas asas tunggal.Kelas beranak mewarisi dua atau lebih daripada dua kelas asas.
PelaksanaanKelas derived_class: class base access_specifierKelas diperolehi _class: access_specifier base_class1, access_specifier base_class2, ....
Akses
Akses kelas diberi ciri-ciri kelas asas tunggalMengakses kelas kelas ciri-ciri gabungan kelas asas yang diwarisi
KeterlihatanAwam, Swasta, DilindungiAwam, Swasta, Dilindungi
Jalankan masaMemerlukan sedikit masa larian ke atas kepalaMemerlukan overhead runtime tambahan berbanding warisan tunggal

Definisi Warisan Tunggal

Dalam warisan Tunggal, terdapat satu kelas asas dan satu kelas tunggal. Kelas yang berasal mewarisi kelas asas sama ada secara terbuka, dilindungi dan secara peribadi. Ahli-ahli kelas asas boleh diakses oleh kelas yang diturunkan mengikut penentuan akses yang ditentukan semasa mewarisi kelas asas.

Mari kita mempunyai contoh kehidupan sebenar kita mempunyai dua kelas, "kelas akaun" dan "kelas akaun penjimatan". Di sini "menyimpan kelas akaun" boleh mewarisi ciri "kelas akaun", jadi kelas "kelas akaun" akan menjadi kelas asas / super / induk untuk menyimpan kelas akaun, dan "menyimpan kelas akaun" akan menjadi kelas yang diturunkan.

Di sini "atribut kelas akaun" adalah acc_no (swasta) dan baki (awam), dan fungsi ahli diinisialisasi (), get_accno () yang umum. Sekarang, "kelas akaun" boleh diwarisi ke "menyimpan kelas akaun" secara umum, semua ahli "kelas akaun" boleh diakses secara langsung oleh "menyimpan kelas akaun". Ia boleh mengakses anggota "kelas akaun" peribadi melalui fungsi ahli "kelas akaun" tetapi tidak boleh mengaksesnya secara langsung.

Pelaksanaan Warisan Tunggal:

 # termasuk menggunakan ruang nama std; kelas Akaun {int acc_no, ; awam: baki pelampung; void initialize (int x, int y) {acc_no = x; keseimbangan = y; } int get_accno. () {return acc_no; }}; kelas Saving_acc: Akaun awam {float intrest_rate; awam: // constructor of Saving_acc class Saving_acc (int c) {interest_rate = c; } void display () {cout < 

Definisi Warisan Pelbagai

Warisan berbilang membolehkan kelas yang diturunkan untuk mewarisi gabungan ciri-ciri lebih daripada satu kelas asas iaitu kita mempunyai kelas turunan tunggal dan pelbagai kelas asas. Setiap kelas asas perlu diwarisi dengan menyebutkan penunjuk akses berasingan bagi setiap mereka. Kelas yang diperolehi boleh mengakses ahli-ahli kelas asas berdasarkan penunjuk akses yang mana kelas asas diwarisi.

Mari buat lebih mudah dengan contoh kita mempunyai tiga kelas iaitu Bike, Kereta, dan Kenderaan. Sekarang, "Kenderaan" boleh mewarisi ciri-ciri "Basikal" serta "Kereta". Oleh itu, "Kenderaan" menjadi kelas asal dan "Basikal" dan "Kereta" menjadi kelas asas. Sekarang, "Basikal" dan "Kereta" diwarisi oleh orang ramai dengan "Kenderaan" yang boleh mengakses semua anggota "Bike" dan "Kereta" tetapi kami mempunyai Model_no yang dilindungi dalam "Kereta" diakses oleh "Kenderaan".

Pelaksanaan Anugerah Pelbagai:

 # termasuk menggunakan ruang nama std; kelas Bike {int engine_cost; ; awam: tidak sah set_engine_cost (int x) {engine_cost = x; }}; kelas Kereta {protected: int Model_no; awam: tidak sah set_Model_no (int p) {Model_no = p; }}; kelas Kenderaan: basikal awam, kereta awam {int no_of_wheels awam: vehical (int w) {no_of_wheels = w; cout << "tiada roda" < 

Perbezaan utama antara warisan tunggal dan pelbagai

  1. Warisan tunggal adalah satu kelas turunan yang mempunyai satu kelas asas manakala, dalam warisan berganda, mempunyai dua atau lebih daripada dua kelas asas, tetapi satu kelas turunan.
  2. Pewarisan berbilang agak mengelirukan kerana di sini kelas yang diperoleh mewarisi dua atau lebih kelas asas. Jika kelas asas mempunyai atribut atau fungsi dengan nama yang sama maka bagi kelas yang diturunkan, menjadi sukar untuk mengenal pasti sifat atribut atau fungsi kelas asas yang ia harus diperolehi.
  3. Isu-isu overhead lebih rendah sekiranya warisan tunggal. Tetapi sekiranya terdapat banyak warisan, objek atau keruntuhan objek menyerang pembina dan penghancur kelas induk dalam hierarki kelas yang meningkatkan overhead.
  4. Warisan tunggal lebih kepada pengkhususan. Manakala banyak warisan lebih kepada generalisasi.
  5. Sebagai warisan tunggal mempunyai overhead yang lebih rendah ia mempunyai runtime yang lebih rendah dibandingkan dengan pelbagai pusaka.

Kesimpulannya

Warisan menjadikan kerja pengatur cara mudah seolah-olah satu kelas sudah dibentuk ciri-cirinya boleh disesuaikan dengan yang lain jika diperlukan. Walaupun pengecualian akses mengehadkan akses kepada ahli kelas asas dengan cara tertentu, tetapi ia menjadikan data lebih selamat. Warisan tunggal entah bagaimana lebih mudah dan mudah dilaksanakan daripada warisan berganda. Warisan mengurangkan saiz kod objek, tetapi juga mempengaruhi jangka masa program.

Top