Lompati ke konten utama
Modul 6 · Pelajaran 1 dari 213/18 dalam kursus~12 min
Pelajaran modul (1/2)

Warisan dalam C++

Pewarisan adalah salah satu pilar utama Pemrograman Berorientasi Objek (OOP). Hal ini memungkinkan kelas baru (disebut kelas turunan atau kelas anak) untuk mewarisi anggota (atribut dan metode) dari kelas yang sudah ada (disebut kelas dasar atau kelas induk), sehingga mendorong penggunaan kembali kode.

Sintaks Dasar

Dalam C++, pewarisan ditentukan menggunakan operator : setelah nama kelas turunan, diikuti dengan penentu akses (biasanya public) dan nama kelas dasar.

C++
class Shape {
public:
    void setColor(std::string c) {
        color = c;
    }
protected:
    std::string color; // Accessible by derived classes
};

// Rectangle inherits publicly from Shape
class Rectangle : public Shape {
public:
    double getArea() {
        return width * height;
    }
private:
    double width {0.0};
    double height {0.0};
};

Penentu Akses: protected

Bersama dengan public dan private, warisan memperkenalkan penentu protected:

  • private anggota kelas dasar tidak dapat diakses langsung dari kelas turunan.
  • protected anggota kelas dasar tidak dapat diakses dari luar, namun dapat diakses langsung di dalam kelas turunan.

Inisialisasi Kelas Dasar

Konstruktor tidak diwariskan secara otomatis. Saat membuat instance kelas turunan, konstruktor kelas dasar dipanggil terlebih dahulu. Jika kelas dasar memerlukan argumen, kita harus memanggilnya secara eksplisit dalam daftar penginisialisasi anggota dari konstruktor turunan.

C++
class Parent {
public:
    Parent(int x) {
        std::cout << "Parent: " << x << std::endl;
    }
};

class Child : public Parent {
public:
    // Explicit call to Parent constructor
    Child(int x, int y) : Parent(x) {
        std::cout << "Child: " << y << std::endl;
    }
};

Cobalah sendiri

Latihan#cpp.m6.l1.e1
Upaya: 0Memuat…

Buat kelas Anjing yang secara publik mewarisi dari kelas Hewan. Kelas Dog harus menyertakan metode play() publik yang mencetak 'Bermain' menggunakan std::cout.

Memuat editor…
Tunjukkan petunjuk

Gunakan sintaks `:` diikuti dengan `Hewan publik` untuk memperluas kelas dasar, lalu tulis metode `play()`.

Solusi tersedia setelah 3 upaya

Latihan#cpp.m6.l1.e2
Upaya: 0Memuat…

Selesaikan kelas Mobil dengan mewarisi dari Kendaraan. Tulis konstruktor untuk Mobil yang menerima std::string b dan meneruskannya ke konstruktor Kendaraan melalui daftar penginisialisasi anggota.

Memuat editor…
Tunjukkan petunjuk

Dalam konstruktor `Mobil`, gunakan sintaks `: Kendaraan(b)` tepat setelah tanda kurung parameter untuk mendelegasikan inisialisasi merek ke kelas dasar.

Solusi tersedia setelah 3 upaya