Manufaktur industri
Industri Internet of Things | bahan industri | Pemeliharaan dan Perbaikan Peralatan | Pemrograman industri |
home  MfgRobots >> Manufaktur industri >  >> Industrial programming >> Bahasa C

Menguasai Warisan C++: Public, Protected & Private Dijelaskan

Warisan Public, Protected dan Private C++

Dalam tutorial ini, kita akan mempelajari cara menggunakan warisan public, protected dan private dalam C++ dengan bantuan contoh.

Dalam warisan C++, kita dapat menurunkan kelas anak dari kelas dasar dalam berbagai mode akses. Misalnya,

 class Base { .... ... .... }; class Derived : public Base { .... ... .... };

Perhatikan kata kunci public dalam kode

 class Derived : public Base

Ini berarti bahwa kita telah membuat kelas turunan dari kelas dasar dalam mode public. Secara alternatif, kita juga dapat menurunkan kelas dalam mode protected atau private.

Kata kunci 3 ini (public, protected, dan private) dikenal sebagai pengubah akses dalam warisan C++.


Warisan public, protected dan private dalam C++

public, protected, dan private warisan memiliki fitur berikut:

Catatan: Anggota private dari kelas dasar tidak dapat diakses oleh kelas turunan.

 class Base { public: int x; protected: int y; private: int z; }; class PublicDerived: public Base { // x adalah public // y adalah protected // z tidak dapat diakses dari PublicDerived }; class ProtectedDerived: protected Base { // x adalah protected // y adalah protected // z tidak dapat diakses dari ProtectedDerived }; class PrivateDerived: private Base { // x adalah private // y adalah private // z tidak dapat diakses dari PrivateDerived }

Contoh 1: Warisan public C++

 // Program C++ untuk menunjukkan cara kerja warisan public #include <iostream> using namespace std; class Base { private: int pvt = 1; protected: int prot = 2; public: int pub = 3; // fungsi untuk mengakses anggota private int getPVT() { return pvt; } }; class PublicDerived : public Base { public: // fungsi untuk mengakses anggota protected dari Base int getProt() { return prot; } }; int main() { PublicDerived object1; cout << "Private = " << object1.getPVT() << endl; cout << "Protected = " << object1.getProt() << endl; cout << "Public = " << object1.pub << endl; return 0; }

Output

 Private = 1 Protected = 2 Public = 3

Di sini, kita telah menurunkan PublicDerived dari Base dalam mode public.

Akibatnya, di dalam PublicDerived:

Karena anggota private dan protected tidak dapat diakses dari main(), kita perlu membuat fungsi public getPVT() dan getProt() untuk mengaksesnya:

 // Kesalahan: anggota "Base::pvt" tidak dapat diakses cout << "Private = " << object1.pvt; // Kesalahan: anggota "Base::prot" tidak dapat diakses cout << "Protected = " << object1.prot;

Perhatikan bahwa fungsi getPVT() telah didefinisikan di dalam Base. Namun, fungsi getProt() telah didefinisikan di dalam PublicDerived.

Ini karena pvt, yang private di Base, tidak dapat diakses oleh PublicDerived.

Namun, prot dapat diakses oleh PublicDerived karena warisan public. Jadi, getProt() dapat mengakses variabel protected dari dalam PublicDerived.


Keterjangkauan dalam Warisan public

Keterjangkauan anggota private anggota protected anggota public
Kelas Dasar Ya Ya Ya
Kelas Turunan Tidak Ya Ya

Contoh 2: Warisan protected C++

 // Program C++ untuk menunjukkan cara kerja warisan protected #include <iostream> using namespace std; class Base { private: int pvt = 1; protected: int prot = 2; public: int pub = 3; // fungsi untuk mengakses anggota private int getPVT() { return pvt; } }; class ProtectedDerived : protected Base { public: // fungsi untuk mengakses anggota protected dari Base int getProt() { return prot; } // fungsi untuk mengakses anggota public dari Base int getPub() { return pub; } }; int main() { ProtectedDerived object1; cout << "Private tidak dapat diakses." << endl; cout << "Protected = " << object1.getProt() << endl; cout << "Public = " << object1.getPub() << endl; return 0; }

Output

 Private tidak dapat diakses. Protected = 2 Public = 3

Di sini, kita telah menurunkan ProtectedDerived dari Base dalam mode protected.

Akibatnya, di dalam ProtectedDerived:

Seperti yang kita ketahui, anggota protected tidak dapat diakses secara langsung dari luar kelas. Akibatnya, kita tidak dapat menggunakan getPVT() dari ProtectedDerived.

Itulah juga sebabnya kita perlu membuat fungsi getPub() di dalam ProtectedDerived untuk mengakses variabel pub.

 // Kesalahan: anggota "Base::getPVT()" tidak dapat diakses cout << "Private = " << object1.getPVT(); // Kesalahan: anggota "Base::pub" tidak dapat diakses cout << "Public = " << object1.pub;

Keterjangkauan dalam Warisan protected

Keterjangkauan anggota private anggota protected anggota public
Kelas Dasar Ya Ya Ya
Kelas Turunan Tidak Ya Ya (diwarisi sebagai variabel protected)

Contoh 3: Warisan private C++

 // Program C++ untuk menunjukkan cara kerja warisan private #include <iostream> using namespace std; class Base { private: int pvt = 1; protected: int prot = 2; public: int pub = 3; // fungsi untuk mengakses anggota private int getPVT() { return pvt; } }; class PrivateDerived : private Base { public: // fungsi untuk mengakses anggota protected dari Base int getProt() { return prot; } // fungsi untuk mengakses anggota private int getPub() { return pub; } }; int main() { PrivateDerived object1; cout << "Private tidak dapat diakses." << endl; cout << "Protected = " << object1.getProt() << endl; cout << "Public = " << object1.getPub() << endl; return 0; }

Output

 Private tidak dapat diakses. Protected = 2 Public = 3

Di sini, kita telah menurunkan PrivateDerived dari Base dalam mode private.

Akibatnya, di dalam PrivateDerived:

Seperti yang kita ketahui, anggota private tidak dapat diakses secara langsung dari luar kelas. Akibatnya, kita tidak dapat menggunakan getPVT() dari PrivateDerived.

Itulah juga sebabnya kita perlu membuat fungsi getPub() di dalam PrivateDerived untuk mengakses variabel pub.

 // Kesalahan: anggota "Base::getPVT()" tidak dapat diakses cout << "Private = " << object1.getPVT(); // Kesalahan: anggota "Base::pub" tidak dapat diakses cout << "Public = " << object1.pub;

Keterjangkauan dalam Warisan private

Keterjangkauan anggota private anggota protected anggota public
Kelas Dasar Ya Ya Ya
Kelas Turunan Tidak Ya (diwarisi sebagai variabel private) Ya (diwarisi sebagai variabel private)

Bahasa C

  1. Memilih Strategi Cloud yang Tepat: Solusi Publik, Privat, dan Hibrid Dijelaskan
  2. Public Cloud: Manfaat, Risiko, dan Pertimbangan Utama
  3. Private Cloud: Keuntungan, Kerugian, dan Cara Melindungi Data Bisnis Anda
  4. Menguasai Variabel, Literal, dan Konstanta C++: Panduan Lengkap
  5. Kelas & Objek C++: Panduan Praktis Pemrograman Berorientasi Objek
  6. Menguasai Manajemen Memori C++: Penggunaan Ahli new dan delete
  7. Fungsi Teman dan Kelas Teman C++: Menguasai Kontrol Akses
  8. Struktur vs Kelas C++: Panduan Praktis untuk Pengembang Terintegrasi
  9. Sigfox Meluncurkan Private Area Network, Meningkatkan Geolokasi, dan Memperluas Solusi IoT
  10. Struktur vs Kelas C++: Perbedaan Utama, Sintaks, dan Kasus Penggunaan Terbaik