0Pricing
C++ Academy · Pelajaran

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 member

Urutan 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 two

Biaya 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

  1. Pewarisan Tunggal dan Jamak
  2. Fungsi Virtual dan vtable
  3. Class Abstrak dan Metode Virtual Murni
  4. Kompromi Pewarisan vs Komposisi
← Kembali ke C++ Academy