Menu
CoddyTech

Pewarisan Dasar

Termasuk bagian Pemrograman Berorientasi Object dalam perjalanan C++ di Coddy. Pelajaran 48 dari 104.

Pewarisan memungkinkan sebuah class memperoleh property dan perilaku dari class lain. Class yang diwarisi disebut class dasar (atau induk), dan class yang mewarisi disebut class turunan (atau anak).

Untuk membuat class turunan, gunakan titik dua yang diikuti penentu akses dan nama class dasar:

class Animal {
public:
    std::string name;
    
    void eat() {
        std::cout << name << " is eating" << std::endl;
    }
};

class Dog : public Animal {
public:
    void bark() {
        std::cout << name << " says woof!" << std::endl;
    }
};

Class Dog kini memiliki akses ke name dan eat() dari Animal, serta method bark() miliknya sendiri. Inilah inti pewarisan: menggunakan kembali kode yang sudah ada sambil menambahkan fungsionalitas baru.

Dog myDog;
myDog.name = "Buddy";
myDog.eat();    // Diwarisi dari Animal
myDog.bark();   // Didefinisikan di Dog

Kata kunci public sebelum Animal menentukan tipe pewarisan. Pewarisan public berarti anggota public dari class dasar tetap public di class turunan. Ini adalah bentuk yang paling umum dan menggambarkan hubungan "adalah": Dog adalah Animal.

challenge icon

Tantangan

Mudah

Mari buat hierarki kendaraan sederhana yang menunjukkan cara kerja inheritance. Kamu akan membuat class dasar Vehicle dan class turunan Motorcycle yang memperluasnya dengan perilaku khusus.

Kamu akan mengatur kodemu dalam tiga file:

  • Vehicle.h: Definisikan class dasar Vehicle dengan:
    • Anggota publik std::string brand
    • Anggota publik int year
    • Method publik displayInfo() yang mencetak merek dan tahun kendaraan dalam format: Brand: <brand>, Year: <year>
  • Motorcycle.h: Definisikan class Motorcycle yang mewarisi Vehicle secara publik. Class turunan ini harus menambahkan:
    • Anggota publik int engineCC untuk kapasitas mesin
    • Method publik revEngine() yang mencetak: <brand> goes vroom vroom!

    Class Motorcycle akan otomatis mewarisi brand, year, dan displayInfo() dari Vehicle.

  • main.cpp: Baca tiga input, masing-masing pada baris terpisah:
    1. Nama merek (string)
    2. Tahun (bilangan bulat)
    3. Kapasitas mesin dalam CC (bilangan bulat)

    Buat object Motorcycle, lalu atur anggota yang diwarisinya (brand dan year) serta anggota engineCC miliknya sendiri. Kemudian hasilkan tiga baris output secara berurutan: pertama, panggil method warisan displayInfo(), berikutnya cetak sendiri kapasitas mesin dengan std::cout << "Engine: " << moto.engineCC << "cc" << std::endl;, lalu panggil method khusus sepeda motor revEngine(). Ini menunjukkan inheritance dengan menggunakan method warisan dan method milik class turunan.

    Format output:

    Brand: <brand>, Year: <year>
    Engine: <engineCC>cc
    <brand> goes vroom vroom!

Contohnya, dengan input Harley, 2022, dan 1200:

Brand: Harley, Year: 2022
Engine: 1200cc
Harley goes vroom vroom!

Jangan lupa menyertakan header guards di file header-mu dan menggunakan #include "Vehicle.h" di header Motorcycle-mu untuk mengakses class dasar.

Coba sendiri

#include <iostream>
#include <string>
#include "Motorcycle.h"

using namespace std;

int main() {
    string brand;
    int year;
    int engineCC;

    cin >> brand;
    cin >> year;
    cin >> engineCC;

    // TODO: Buat object Motorcycle
    // TODO: Atur anggota brand, year, dan engineCC miliknya
    // TODO: Panggil displayInfo() untuk menampilkan informasi yang diwarisi
    // TODO: Cetak informasi mesin dengan format: Engine: <engineCC>cc
    // TODO: Panggil revEngine() untuk menunjukkan perilaku khusus sepeda motor

    return 0;
}
quiz iconUji dirimu

Pelajaran ini berisi kuis singkat. Mulai pelajarannya untuk menjawab kuis dan melacak progresmu.

Semua pelajaran di Pemrograman Berorientasi Object

Latihan sendiri: Compiler C++ online