Yang Anda Perlu Tahu Mengenai Warisan dalam C ++



Artikel ini akan memberi anda pengetahuan terperinci dan komprehensif mengenai Warisan dalam C ++, pelbagai jenis dan cara melaksanakannya.

C ++ adalah bahasa Berorientasikan Objek. Pengabstrakan data, Polimorfisme, Enkapsulasi, dan Warisan adalah tonggak OOP. Dalam catatan ini, kita akan memahami apa itu warisan? Jenis warisan dalam C ++, dan semua konsep yang diperlukan yang berkaitan dengannya dari awal. Pada akhirnya, kita juga akan melihat kelemahan konsep hebat ini dan berusaha menyelesaikannya.

Apakah Warisan dalam C ++

Warisan adalah salah satu konsep yang paling kuat dan banyak digunakan dalam C ++ atau bahasa berorientasikan Objek lain. Memahami konsep ini memerlukan sedikit pengetahuan mengenai kelas dan objek. Dengan menggunakan Warisan, kita dapat membuat kelas yang terdiri daripada kaedah dan atribut umum. Kelas ini boleh diwarisi oleh kelas lain yang mengandungi kaedah yang lebih khusus.





Warisan dalam C ++

Dengan melakukan ini, kita tidak perlu menulis fungsi yang sama berulang-ulang yang menjimatkan masa dan meningkatkan keterbacaan kod.



Sintaks:

class origin_class: access_type base_class {// kelas badan}

Kelas asas: Kelas yang terdiri daripada semua kaedah dan atribut umum yang dapat dikongsi oleh kelas lain untuk meningkatkan keterbacaan kod disebut kelas asas.

rentetan hingga penukaran tarikh di java

Kelas turutan: Kelas yang terdiri daripada kaedah yang lebih spesifik dan mewarisi kelas disebut kelas turunan. Kelas turunan juga boleh menjadi kelas asas bagi beberapa kelas turunan yang lain.



Sekiranya kita membuat kelas XYZ, dengan beberapa atribut dan kaedah. Sekarang pelajar kelas akan mempunyai beberapa sifat lain, tetapi juga akan merangkumi unsur-unsur kelas XYZ dan yang sama berlaku untuk kelas fakulti. Mari lihat rajah:

Jadi, pelajar dan kelas fakulti akan mewarisi dari XYZ.

Penentu akses- Kami faham bagaimana kelas boleh mewarisi kelas lain. Tetapi beberapa orang mungkin mengatakan bahawa itu adalah kaedah yang tidak selamat kerana semua sifat dan kaedah kelas asas atau kelas induk dikongsi dengan kelas anak atau kelas yang berasal. Contohnya, sekiranya kelas ‘Bank’ diwarisi oleh kelas ‘pelanggan’ dan ‘pelabur’. Atribut kelas ‘Bank’ seperti ‘vaultpassword’, maklumat berkaitan pelanggan dan data peribadi lain dikongsi dengan kelas ‘pelanggan’ dan ‘pelabur’ yang tidak selamat.

Untuk menyelesaikan masalah di atas C ++ menggunakan penentu akses untuk menghadkan akses atribut kelas asas ke kelas turunan. Terdapat sejumlah 3 jenis penentu akses di C ++

  1. Awam
  2. Peribadi
  3. Dilindungi

Jadual di bawah akan memberi anda pemahaman yang baik tentang jenis data apa yang dapat diakses oleh kelas turunan mengikut spesifikasi akses yang berbeza.

Penentu Akses Data Awam Data Peribadi Data yang Dilindungi
Peribadi Tidak DiwarisiTidak DiwarisiTidak Diwarisi
Dilindungi Dilindungi Peribadi Dilindungi
Awam Awam Peribadi Dilindungi

Warisan Tunggal

Warisan Tunggal boleh dianggap sebagai bentuk warisan vanila biasa. Dalam pusaka tunggal, satu kelas mewarisi dari kelas asas.

#sertakan dengan menggunakan ruang nama kelas std Kereta Api {int Numberofwheels int Numberofcoaches public: void Traininfo (int n, int m) {Numberofwheels = n Numberofcoaches = m} void showinfo () {cout<Kes pusaka ini disebut sebagai warisan bertingkat. Kelas di antara kelas pertama dan terakhir juga dikenali sebagai kelas asas pertengahan.Apa pendapat anda, bolehkah kelas terakhir mewarisi ahli kelas pertama? Ya ia boleh

#masuk menggunakan ruang nama kelas std Pertama {dilindungi: int a public: void getinfofirst (int x) {a = x} batal showinfofirst () {std :: cout<< 'Value of a = ' < 

Pengeluaran:

Nilai a = 10

arahan java untuk menamatkan program

Nilai b = 20

Nilai c = 30

Nilai d = 50

Warisan Hierarki

Masalah tertentu tidak dapat diselesaikan dengan bantuan warisan tunggal atau bertingkat. Dalam warisan hierarki, lebih daripada 1 kelas mewarisi dari satu kelas asas.

#sertakan dengan menggunakan namespace std class College {public: College () {cout<< 'We are in class College' << endl } } class Student: public College { } class Faculty: public College { } int main() { Student student Faculty faculty return 0 }

Pengeluaran:

Kami berada di kelas Kolej

Kami berada di kelas Kolej

Warisan Berganda dalam C ++

Kami melihat dalam warisan hierarki satu kelas asas mempunyai lebih daripada satu kelas turunan. Dalam beberapa Warisan satu kelas yang diturunkan mempunyai lebih daripada satu kelas asas.

#sertakan dengan menggunakan namespace std class One {protected: int a public: void getinfoOne (int x) {a = x}} kelas Dua {dilindungi: int b awam: void getinfoTwo (int y) {b = y}} kelas Utama: public One, public Two {public: void Display () {std :: cout<< 'Value of a = ' < Pada ketika ini, kami mempunyai pemahaman yang baik mengenai semua jenis warisan yang digunakan dalam C ++. Tetapi, tunggu bagaimana jika kita ingin menggunakan 2 jenis warisan? Adakah mungkin? Ya, itu mungkin dengan bantuan Warisan hibrid. Dalam Warisan hibrid, kami menggabungkan 2 jenis warisan yang berbeza. Contohnya- Warisan bertingkat dan pelbagai, warisan Hierarki dan pelbagai, dll.

#include using namespace std class World {protected: int a public: void getinfoWorld (int x) {a = x}} class Benua: public World {dilindungi: int b public: void getinfoContinent (int y) {b = y}} kelas Negara {dilindungi: int d public: void getinfoCountry (int m) {d = m}} kelas Australia: benua awam, negara awam {awam: void Paparan () {std :: cout<< 'Value of a = ' < 

Mari kita fahami rajah di atas yang akan membantu kita dalam memahami masalah berlian. kelas B dan kelas C mewarisi dari kelas A oleh itu kedua-dua kelas A dan kelas B mempunyai atribut dan kaedah kelas A. sekiranya kelas D mewarisi dari Kelas B dan juga kelas C. kelas D akan mempunyai semua sifat kelas B dan kelas C Ia juga mempunyai semua sifat kelas A yang diwarisi dari kelas B dan juga kelas C. oleh itu jika kita membuat objek kelas D dan memanggil kaedah kelas A. situasi yang tidak jelas akan dibuat dan penyusun akan keliru dari mana semestinya kaedah kelas A, dari kelas B atau kelas D.

kelas pengimbas dalam contoh java

Untuk menyelesaikan kesamaran ini, kami menggunakan konsep yang disebut kelas asas maya. Apabila kita menjadikan kelas asas sebagai kelas asas maya, hanya satu salinan kelas tersebut yang diwarisi tanpa mengira bilangan jalur yang ada antara kelas asas maya dan kelas turunan.

kelas A {} kelas B: awam maya A {} kelas C: maya awam A {} kelas D: awam C, awam D {}

Dengan ini, kita akan mengakhiri artikel Warisan dalam C ++ ini. Sekiranya anda ingin mengetahui lebih lanjut, lihat di oleh Edureka, sebuah syarikat pembelajaran dalam talian yang dipercayai. Kursus latihan dan pensijilan Java J2EE dan SOA Edureka dirancang untuk melatih anda untuk konsep Java teras dan maju bersama dengan pelbagai kerangka kerja Java seperti Hibernate & Spring.

Ada soalan untuk kami? Sila sebutkan di bahagian komen blog ini dan kami akan menghubungi anda secepat mungkin.