Yang Perlu Anda Ketahui Tentang Warisan di C ++



Artikel ini akan memberi Anda pengetahuan rinci dan komprehensif tentang Warisan di C ++, berbagai jenis dan cara menerapkannya.

C ++ adalah bahasa Berorientasi Objek. Abstraksi data, Polimorfisme, Enkapsulasi, dan Warisan adalah landasan OOP. Pada postingan kali ini, kita akan memahami apa itu warisan? Jenis pewarisan di C ++, dan semua konsep penting yang terkait dengannya dari awal. Pada akhirnya, kita juga akan melihat kekurangan dari konsep yang kuat ini dan mencoba menyelesaikannya.

Apa itu Warisan di C ++

Warisan adalah salah satu konsep yang paling kuat dan banyak digunakan di C ++ atau bahasa berorientasi objek lainnya. Memahami konsep ini membutuhkan sedikit pengetahuan tentang kelas dan objek. Dengan menggunakan Inheritance, kita dapat membuat kelas yang terdiri dari metode dan atribut umum. Kelas ini dapat diwarisi oleh kelas lain yang berisi metode yang lebih spesifik.





Warisan di C ++

python def __init__

Dengan melakukan ini, kita tidak perlu menulis fungsi yang sama berulang kali yang menghemat waktu dan meningkatkan keterbacaan kode.



Sintaksis:

kelas turunan_kelas: access_type base_class {// class body}

Kelas dasar: Kelas yang terdiri dari semua metode umum dan atribut yang dapat digunakan bersama oleh kelas lain untuk meningkatkan keterbacaan kode disebut kelas dasar.

Kelas turunan: Kelas yang terdiri dari metode yang lebih spesifik dan mewarisi kelas disebut kelas turunan. Kelas turunan juga bisa menjadi kelas dasar untuk beberapa kelas turunan lainnya.



Jika kita membuat kelas XYZ, dengan beberapa atribut dan metode. Sekarang siswa kelas akan memiliki beberapa atribut lain, tetapi itu juga akan menyertakan elemen kelas XYZ dan hal yang sama berlaku untuk kelas fakultas. Mari kita lihat diagram:

Jadi, kelas mahasiswa dan fakultas akan mewarisi dari XYZ.

Akses penentu- Kami memahami bagaimana sebuah kelas dapat mewarisi kelas lain. Tetapi beberapa orang mungkin mengatakan bahwa ini adalah metode yang tidak aman karena semua atribut dan metode dari kelas dasar atau kelas induk dibagikan dengan kelas anak atau kelas turunan. Misalnya, jika kelas 'Bank' diwarisi oleh kelas 'pelanggan' dan 'investor'. Atribut kelas 'Bank' seperti 'vaultpassword', informasi terkait pelanggan lainnya, dan data pribadi dibagikan dengan 'pelanggan' dan kelas 'investor' yang tidak aman.

Untuk mengatasi masalah di atas, C ++ menggunakan penentu akses untuk membatasi akses atribut kelas dasar ke kelas turunan. Ada total 3 jenis penentu akses di C ++

  1. Publik
  2. Pribadi
  3. Terlindung

Tabel di bawah ini akan memberi Anda pemahaman yang baik tentang jenis data apa yang dapat diakses oleh kelas turunan menurut penentu akses yang berbeda.

Access Specifier Data Publik Data Pribadi Data yang Dilindungi
Pribadi Tidak DiwarisiTidak DiwarisiTidak Diwarisi
Terlindung Terlindung Pribadi Terlindung
Publik Publik Pribadi Terlindung

Warisan Tunggal

Warisan Tunggal dapat dianggap sebagai warisan bentuk vanili biasa. Dalam pewarisan tunggal, satu kelas mewarisi dari kelas dasar.

#include using namespace std class Train {int Numberofwheels int Numberofcoaches public: void Traininfo (int n, int m) {Numberofwheels = n Numberofcoaches = m} void showinfo () {cout<Kasus pewarisan ini disebut pewarisan bertingkat. Kelas di antara kelas pertama dan terakhir juga dikenal sebagai kelas dasar menengah.Bagaimana menurut Anda, dapatkah kelas terakhir mewarisi anggota kelas pertama? Ya bisa

#include using namespace std class First {protected: int a public: void getinfofirst (int x) {a = x} void showinfofirst () {std :: cout<< 'Value of a = ' < 

Keluaran:

Nilai a = 10

Nilai b = 20

Nilai c = 30

Nilai d = 50

Warisan Hirarkis

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

#include using 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 }

Keluaran:

Kami berada di kelas College

Kami berada di kelas College

Beberapa Warisan di C ++

Kita melihat dalam pewarisan hierarkis satu kelas dasar memiliki lebih dari satu kelas turunan. Dalam beberapa Warisan, satu kelas turunan memiliki lebih dari satu kelas dasar.

#include using namespace std class One {protected: int a public: void getinfoOne (int x) {a = x}} kelas Dua {dilindungi: int b publik: void getinfoTwo (int y) {b = y}} kelas Utama: publik Satu, publik Dua {publik: void Tampilan () {std :: cout<< 'Value of a = ' < Pada titik ini, kami memiliki pemahaman yang baik tentang semua jenis pewarisan yang digunakan dalam C ++. Tapi, tunggu dulu bagaimana jika kita ingin menggunakan 2 jenis warisan yang berbeda? Apa itu mungkin? Ya, itu dimungkinkan dengan bantuan Warisan hibrida. Dalam Warisan hibrida, kami menggabungkan 2 jenis warisan. Misalnya- Warisan bertingkat dan berganda, Hierarki dan warisan berganda, dll.

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

Mari kita pahami diagram di atas yang akan membantu kita dalam memahami masalah intan. kelas B dan kelas C mewarisi dari kelas A maka baik kelas A dan kelas B memiliki atribut dan metode kelas A. jika kelas D mewarisi dari Kelas B serta kelas C. kelas D akan memiliki semua atribut kelas B dan kelas C Ia juga memiliki semua atribut kelas A yang diwarisi dari kelas B serta kelas C. maka jika kita membuat objek dari kelas D dan memanggil metode kelas A. situasi ambigu akan dibuat dan kompilator akan bingung dari mana itu harus metode kelas A, dari kelas B atau kelas D.

Untuk mengatasi ambiguitas ini kami menggunakan konsep yang disebut kelas basis virtual. Ketika kita membuat kelas dasar menjadi kelas dasar virtual, hanya satu salinan dari kelas itu yang diwarisi terlepas dari jumlah jalur yang ada antara kelas dasar virtual dan kelas turunan.

kelas A {} kelas B: publik virtual A {} kelas C: publik virtual A {} kelas D: publik C, publik D {}

Dengan ini, kita sampai pada akhir artikel Warisan dalam C ++ ini. Jika Anda ingin mempelajari lebih lanjut, lihat oleh Edureka, perusahaan pembelajaran online terpercaya. Kursus pelatihan dan sertifikasi Java J2EE dan SOA dari Edureka dirancang untuk melatih Anda baik konsep inti dan lanjutan Java bersama dengan berbagai kerangka kerja Java seperti Hibernate & Spring.

Ada pertanyaan untuk kami? Harap sebutkan di bagian komentar blog ini dan kami akan menghubungi Anda kembali secepatnya.