Pewarisan Tunggal dan Jamak
Modelkan hubungan is-a dengan pewarisan tunggal dan atasi jebakan pewarisan jamak
Pewarisan Tunggal dan Jamak adalah pelajaran C++ Academy gratis di CoddyKit. Ini adalah pelajaran 1 dari 4. Kamu bisa membaca pelajaran lengkapnya di bawah secara gratis — lalu praktikkan langsung di browser dengan editor kode bawaan dan tutor AI 24/7. Ini adalah bagian dari jalur belajar C++ Academy, dan progresmu tersinkronisasi di web dan aplikasi CoddyKit. Kursus C++ Academy mencakup 4 pelajaran total.
Apa Itu Pewarisan
Pewarisan memungkinkan satu kelas (kelas turunan) menggunakan kembali dan memperluas kelas lain (kelas dasar). Pewarisan memodelkan hubungan "adalah".
class Animal {
public:
void breathe() { std::cout << "breathing\n"; }
};
class Dog : public Animal {
public:
void bark() { std::cout << "Woof!\n"; }
};Pewarisan Publik
Gunakan public untuk memodelkan hubungan "adalah" — Dog adalah Animal. Anggota mempertahankan tingkat aksesnya dalam kelas turunan.
Pewarisan Protected dan Private
Pewarisan protected dan private memodelkan hubungan "diimplementasikan menggunakan" — jarang digunakan. Untuk kasus tersebut, pilih komposisi.
Mengakses Anggota Kelas Dasar
Kelas turunan dapat menggunakan anggota publik atau dilindungi apa pun dari kelas dasar secara langsung.
Dog d;
d.breathe(); // inherited from Animal
d.bark(); // own memberUrutan Konstruktor
Konstruktor kelas dasar dijalankan sebelum konstruktor kelas turunan. Gunakan daftar inisialisasi anggota untuk meneruskan argumen ke kelas dasar.
class Pet : public Animal {
std::string name_;
public:
Pet(std::string n) : Animal(), name_(std::move(n)) {}
};Urutan Destruktor
Destruktor dijalankan dalam urutan terbalik — kelas turunan terlebih dahulu, kemudian kelas dasar. Jadikan destruktor kelas dasar virtual jika Anda menghapus objek melalui penunjuk kelas dasar.
Pewarisan Berganda
C++ memungkinkan sebuah kelas mewarisi lebih dari satu kelas dasar. Gunakan seperlunya — hal ini memperumit desain.
class Printable { public: virtual void print() = 0; };
class Serializable { public: virtual std::string serialize() = 0; };
class Document : public Printable, public Serializable {
// implements both interfaces
};Masalah Berlian
Jika dua kelas dasar berbagi satu kelas dasar yang sama, kelas turunan akan memiliki dua salinan kelas dasar tersebut. Atasi masalah ini dengan pewarisan virtual.
class A {};
class B : virtual public A {};
class C : virtual public A {};
class D : public B, public C {}; // D has ONE A, not twoBiaya Pewarisan Virtual
Kelas dasar virtual menambah beban tambahan — satu penunjuk ekstra per objek dan satu tingkat indireksi ekstra pada setiap akses anggota kelas dasar. Hindari jika memungkinkan.
Komposisi vs Pewarisan
Sering kali, komposisi "memiliki" lebih sederhana daripada pewarisan "adalah". Sebuah Car memiliki Engine — jangan mewariskan Car dari Engine.
class Engine { /* ... */ };
class Car {
Engine engine_; // composition
};Pewarisan Antarmuka vs Pewarisan Implementasi
Dua penggunaan umum:
- Antarmuka — turunkan kelas dari kelas dasar virtual murni untuk memenuhi kontrak
- Implementasi — turunkan kelas untuk menggunakan kembali kode (CRTP, kelas campuran)
Kapan Menggunakan Pewarisan
Gunakan pewarisan jika:
- Ada hubungan "adalah" yang nyata
- Anda memerlukan polimorfisme waktu berjalan melalui fungsi virtual
- Kelas dasar memang dirancang untuk diwariskan
Pemeriksaan Singkat
Teknik apa yang mencegah adanya dua salinan kelas dasar yang sama saat pewarisan berganda digunakan?
Ringkasan
Pewarisan memodelkan hubungan "adalah" melalui pewarisan publik. Pewarisan berganda diperbolehkan, tetapi masalah berlian memerlukan pewarisan virtual. Pilih komposisi untuk hubungan "memiliki" dan penggunaan kembali kode.
Pertanyaan yang Sering Diajukan
Apakah pelajaran “Pewarisan Tunggal dan Jamak” gratis?
Ya — teks lengkap “Pewarisan Tunggal dan Jamak” gratis dibaca di sini di web. Untuk praktiknya secara interaktif (editor kode bawaan dan tutor AI 24/7) dan buka sisa kursus C++ Academy, upgrade ke CoddyKit PRO. Kursus C++ Academy mencakup 4 pelajaran total.
Apa yang akan aku pelajari di “Pewarisan Tunggal dan Jamak”?
Modelkan hubungan is-a dengan pewarisan tunggal dan atasi jebakan pewarisan jamak Kamu berlatih C++ Academy dengan kode praktik yang langsung kamu jalankan di browser, dan tutor AI 24/7 menjawab pertanyaanmu saat kamu mengerjakan pelajaran ini.
Apakah aku perlu pengalaman untuk memulai C++ Academy?
Tidak diperlukan pengalaman sebelumnya. C++ Academy di CoddyKit dirancang untuk pemula hingga pelajar tingkat lanjut, jadi kamu bisa memulai di sini atau dari awal dan belajar sesuai kecepatan kamu sendiri. Ini adalah pelajaran 1 dari 4.
Berapa lama pelajaran “Pewarisan Tunggal dan Jamak” memakan waktu?
Sebagian besar pelajaran CoddyKit memakan waktu sekitar 5–10 menit. Setiap pelajaran ringkas dan interaktif, jadi kamu membuat kemajuan stabil dan melanjutkan dari tempat kamu tinggalkan di web dan aplikasi.
Bisakah aku menulis dan menjalankan kode dalam pelajaran C++ Academy ini?
Ya. Setiap pelajaran C++ Academy menyertakan editor kode bawaan, jadi kamu menulis dan menjalankan kode nyata langsung di browser dan mendapatkan umpan balik AI instan — tidak diperlukan penyiapan lokal.
Semua pelajaran dalam kursus ini
- Pewarisan Tunggal dan Jamak
- Fungsi Virtual dan vtable
- Class Abstrak dan Metode Virtual Murni
- Kompromi Pewarisan vs Komposisi