C++ Academy · Pelajaran

Class Abstrak dan Metode Virtual Murni

Definisikan interface dengan metode virtual murni dan tegakkan kontrak class turunan

Pelajaran 3 dari 413 langkah

Class Abstrak dan Metode Virtual Murni adalah pelajaran C++ Academy gratis di CoddyKit. Ini adalah pelajaran 3 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 Kelas Abstrak

Kelas abstrak memiliki setidaknya satu fungsi virtual murni — yang dideklarasikan dengan = 0. Anda tidak dapat membuat instansnya secara langsung.

class Animal {
public:
    virtual void speak() const = 0;   // pure virtual
    virtual ~Animal() = default;
};

// Animal a;     // ERROR: cannot instantiate

Fungsi Virtual Murni

= 0 menandai bahwa suatu fungsi tidak memiliki implementasi bawaan. Kelas turunan harus menimpanya sebelum kelas tersebut dapat dibuat sebagai instans.

Mengimplementasikan Antarmuka

Kelas turunan menyediakan isi konkret untuk setiap fungsi virtual murni.

class Dog : public Animal {
public:
    void speak() const override {
        std::cout << "Woof!\n";
    }
};

Dog d;
d.speak();      // Woof!

Kelas Abstrak sebagai Antarmuka

Kelas abstrak yang hanya memiliki metode virtual murni tanpa anggota data berfungsi seperti antarmuka dalam bahasa lain.

class Drawable {
public:
    virtual void draw() const = 0;
    virtual ~Drawable() = default;
};

Menggabungkan Implementasi dan Antarmuka

Kelas abstrak dapat memiliki metode virtual murni sekaligus metode konkret. Fungsi virtual murni mendefinisikan kontrak; metode konkret menyediakan perilaku bersama.

class Logger {
public:
    void logInfo(const std::string& msg) { log("INFO", msg); }
    void logError(const std::string& msg) { log("ERROR", msg); }
protected:
    virtual void log(const std::string& level, const std::string& msg) = 0;
};

Virtual Murni dengan Isi Bawaan

Fungsi virtual murni dapat memiliki isi — berguna sebagai perilaku bawaan yang dapat dipanggil oleh kelas turunan.

class Base {
public:
    virtual void f() = 0;
};
void Base::f() {
    std::cout << "default behavior\n";
}

class Derived : public Base {
public:
    void f() override {
        Base::f();          // call the default
        std::cout << "extra\n";
    }
};

Gunakan melalui Penunjuk dan Referensi

Kode polimorfik menyimpan objek abstrak melalui penunjuk atau referensi ke tipe dasar.

void perform(const Animal& a) {
    a.speak();
}

Menyimpan dalam Kontainer

Vektor tidak dapat menyimpan tipe abstrak berdasarkan nilai. Gunakan penunjuk — biasanya penunjuk cerdas.

std::vector<std::unique_ptr<Animal>> zoo;
zoo.push_back(std::make_unique<Dog>());
zoo.push_back(std::make_unique<Cat>());
for (auto& a : zoo) a->speak();

Kapan Menggunakan Kelas Abstrak

Gunakan kelas abstrak ketika:

  • Anda ingin mendefinisikan antarmuka umum untuk beberapa implementasi yang tidak berkaitan
  • Anda memerlukan tipe dasar untuk kontainer polimorfik
  • Anda ingin menyisipkan perilaku melalui subkelas (pola Metode Templat)

Alternatif: Konsep dan Templat

Untuk polimorfisme waktu kompilasi, konsep dan templat C++20 sering kali dapat menggantikan kelas abstrak — tanpa biaya waktu berjalan. Gunakan virtual jika polimorfisme diperlukan saat program berjalan.

Jebakan: Pemotongan

Teruskan kelas abstrak berdasarkan referensi atau penunjuk. Penerusan berdasarkan nilai memang tidak mungkin dilakukan (tipe abstrak tidak dapat dibuat sebagai instans) — tetapi penerusan kelas turunan berdasarkan nilai akan menyebabkan pemotongan.

Pemeriksaan Singkat

Apa yang membuat sebuah kelas menjadi abstrak dalam C++?

Ringkasan

Kelas abstrak — yaitu kelas yang memiliki setidaknya satu metode virtual murni — mendefinisikan antarmuka untuk kode polimorfik. Gunakan kelas tersebut dengan penunjuk atau referensi, sering kali penunjuk cerdas, untuk meneruskan perilaku saat program berjalan.

Gratis untuk memulai

Belajar C++ dengan tutor AI — gratis

Tulis dan jalankan kode asli di browser kamu, dapatkan bantuan instan dari tutor AI 24/7, dan lanjutkan di mana kamu tinggalkan di web atau aplikasi.

Kursus
51
Pelajaran
203

Pertanyaan yang Sering Diajukan

Apakah pelajaran “Class Abstrak dan Metode Virtual Murni” gratis?

Ya — teks lengkap “Class Abstrak dan Metode Virtual Murni” 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 “Class Abstrak dan Metode Virtual Murni”?

Definisikan interface dengan metode virtual murni dan tegakkan kontrak class turunan 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 3 dari 4.

Berapa lama pelajaran “Class Abstrak dan Metode Virtual Murni” 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