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.
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:
privateanggota kelas dasar tidak dapat diakses langsung dari kelas turunan.protectedanggota 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.
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
Buat kelas Anjing yang secara publik mewarisi dari kelas Hewan. Kelas Dog harus menyertakan metode play() publik yang mencetak 'Bermain' menggunakan std::cout.
Tunjukkan petunjuk
Gunakan sintaks `:` diikuti dengan `Hewan publik` untuk memperluas kelas dasar, lalu tulis metode `play()`.
Solusi tersedia setelah 3 upaya
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.
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