C++ Class Inheritance Constructor

4 min read Jul 01, 2024
C++ Class Inheritance Constructor

Memahami Konstruktor dalam Pewarisan Kelas C++

Pewarisan kelas merupakan konsep fundamental dalam pemrograman berorientasi objek (OOP) yang memungkinkan kelas turunan (child class) mewarisi sifat-sifat dan perilaku dari kelas induk (parent class). Salah satu aspek penting dalam pewarisan adalah bagaimana konstruktor kelas induk dan kelas turunan berinteraksi.

Konstruktor dalam Pewarisan

Ketika objek kelas turunan dibuat, konstruktor kelas turunan bertanggung jawab untuk menginisialisasi atribut dan metode kelas turunan, tetapi juga harus menginisialisasi konstruktor kelas induk.

Proses Inisialisasi:

  1. Konstruktor kelas induk dijalankan terlebih dahulu. Ini memastikan bahwa atribut kelas induk diinisialisasi dengan benar sebelum konstruktor kelas turunan dijalankan.
  2. Konstruktor kelas turunan dijalankan setelahnya. Konstruktor kelas turunan bertanggung jawab untuk menginisialisasi atribut spesifik kelas turunan.

Memanggil Konstruktor Kelas Induk

Untuk memanggil konstruktor kelas induk, Anda dapat menggunakan konstruktor delegasi dalam konstruktor kelas turunan. Ini dilakukan dengan menyertakan daftar inisialisasi dalam konstruktor kelas turunan.

Contoh:

#include 

class Animal {
public:
    Animal(const std::string& name) : name(name) {
        std::cout << "Animal konstruktor dijalankan: " << name << std::endl;
    }

protected:
    std::string name;
};

class Dog : public Animal {
public:
    Dog(const std::string& name, const std::string& breed) : Animal(name), breed(breed) {
        std::cout << "Dog konstruktor dijalankan: " << name << " (" << breed << ")" << std::endl;
    }

private:
    std::string breed;
};

int main() {
    Dog myDog("Fido", "Golden Retriever"); 
    return 0;
}

Penjelasan Kode:

  • Kelas Animal adalah kelas induk dengan konstruktor yang menerima nama sebagai parameter.
  • Kelas Dog mewarisi kelas Animal dan memiliki konstruktornya sendiri.
  • Dog(const std::string& name, const std::string& breed) : Animal(name), breed(breed): Baris ini menginisialisasi konstruktor Dog dengan memanggil konstruktor Animal terlebih dahulu, menggunakan daftar inisialisasi.

Hasil Output:

Animal konstruktor dijalankan: Fido
Dog konstruktor dijalankan: Fido (Golden Retriever)

Catatan:

  • Jika konstruktor kelas turunan tidak secara eksplisit memanggil konstruktor kelas induk, kompilator akan secara otomatis memanggil konstruktor default kelas induk.
  • Jika kelas induk tidak memiliki konstruktor default, maka Anda harus secara eksplisit memanggil konstruktor yang sesuai dalam konstruktor kelas turunan.

Kesimpulan

Memahami interaksi antara konstruktor kelas induk dan kelas turunan adalah penting dalam penggunaan pewarisan kelas C++. Dengan memahami konsep ini, Anda dapat membangun kelas-kelas yang terstruktur dengan baik dan menghindari kesalahan runtime yang tidak diinginkan.

Featured Posts