Menu
CoddyTech

Pewarisan Tunggal dan Bertingkat

Termasuk bagian Pemrograman Berorientasi Objek dalam perjalanan Java di Coddy. Pelajaran 25 dari 87.

Sejauh ini, kita telah melihat class yang mewarisi satu class induk secara langsung. Namun, pewarisan dapat membentuk struktur yang berbeda, bergantung pada hubungan antarkelas. Mari kita jelajahi dua pola utama: pewarisan tunggal dan pewarisan multitingkat.

Pewarisan tunggal adalah yang selama ini kita gunakan. Sebuah class mewarisi tepat satu class induk secara langsung:

public class Animal { }
public class Dog extends Animal { }
public class Cat extends Animal { }

Di sini, Dog dan Cat sama-sama mewarisi Animal, tetapi keduanya tidak saling mewarisi. Setiap turunan memiliki satu parent langsung.

Pewarisan multilevel membuat rantai ketika suatu class mewarisi class lain, yang juga mewarisi class lainnya:

public class Animal {
    public void eat() {
        System.out.println("Eating");
    }
}

public class Mammal extends Animal {
    public void breathe() {
        System.out.println("Breathing");
    }
}

public class Dog extends Mammal {
    public void bark() {
        System.out.println("Barking");
    }
}

Dalam rantai ini, Dog mewarisi Mammal, yang mewarisi Animal. object Dog memiliki akses ke semua method dari seluruh rantai:

Dog dog = new Dog();
dog.eat();      // Dari Animal
dog.breathe();  // Dari Mammal
dog.bark();     // Dari Dog

Ingat bahwa Object berada di puncak setiap rantai. Jadi, Dog kita sebenarnya memiliki empat tingkat: Object -> Animal -> Mammal -> Dog. Perantaian konstruktor mengalir melalui semua tingkat ini saat membuat object baru.

challenge icon

Tantangan

Mudah

Mari buat hierarki transportasi yang menunjukkan pola pewarisan tunggal dan bertingkat. Kamu akan membuat rangkaian class, setiap tingkat menambahkan kemampuan baru, untuk menunjukkan bagaimana method diwariskan melalui beberapa tingkat.

Kamu akan mengatur kodemu dalam empat file:

  • Vehicle.java: Buat class dasar di tingkat teratas hierarkimu. Setiap kendaraan harus memiliki:
    • Field private untuk brand (String)
    • Konstruktor yang menerima brand
    • Method getBrand() yang mengembalikan brand
    • Method move() yang mencetak: [brand] is moving
  • LandVehicle.java: Buat class yang memperluas Vehicle, yang mewakili tingkat tengah dalam rangkaian pewarisan bertingkatmu. Kendaraan darat menambahkan perilaku khusus untuk di darat:
    • Field private untuk wheels (int)
    • Konstruktor yang menerima brand dan wheels, menggunakan super(brand) untuk bagian parent
    • Method getWheels() yang mengembalikan jumlah roda
    • Method honk() yang mencetak: [brand] honks!
  • Car.java: Buat class yang memperluas LandVehicle, untuk melengkapi rangkaian pewarisan tiga tingkatmu. Mobil menambahkan fitur khususnya sendiri:
    • Field private untuk model (String)
    • Konstruktor yang menerima brand, wheels, dan model, menggunakan super(brand, wheels)
    • Method getModel() yang mengembalikan model
    • Method displayInfo() yang mencetak: [brand] [model] with [wheels] wheels
  • Main.java: Tunjukkan bagaimana object Car dapat mengakses method dari ketiga tingkat hierarki. Kamu akan menerima tiga input: brand (String), wheels (int), dan model (String). Buat Car dan panggil method berikut secara berurutan:
    • move() - diwarisi dari Vehicle (grandparent)
    • honk() - diwarisi dari LandVehicle (parent)
    • displayInfo() - didefinisikan di Car itu sendiri

Kamu akan menerima tiga input: nama brand, jumlah roda, dan nama model.

Output-mu harus menampilkan tiga baris yang menunjukkan bagaimana object Car dapat menggunakan method dari setiap tingkat dalam rangkaian pewarisannya, mulai dari Vehicle di tingkat teratas hingga class-nya sendiri!

Coba sendiri

import java.util.Scanner;

public class Main {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        
        // Baca input
        String brand = scanner.nextLine();
        int wheels = scanner.nextInt();
        scanner.nextLine(); // lewati karakter baris baru
        String model = scanner.nextLine();
        
        // TODO: Buat object Car dengan nilai input
        
        // TODO: Panggil move(), diwarisi dari Vehicle (class kakek)
        
        // TODO: Panggil honk(), diwarisi dari LandVehicle (class induk)
        
        // TODO: Panggil displayInfo(), didefinisikan di class Car sendiri
    }
}
quiz iconUji dirimu

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

Semua pelajaran di Pemrograman Berorientasi Objek

Latihan sendiri: Compiler Java online