Menu
CoddyTech

Kata Kunci super

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

Kata kunci super menyediakan cara bagi subclass untuk merujuk ke parent class-nya. Ini penting saat kamu perlu mengakses anggota atau konstruktor parent class dari dalam child class.

Penggunaan super yang paling umum adalah memanggil konstruktor parent. Ini harus menjadi pernyataan pertama dalam konstruktor subclass:

public class Vehicle {
    private String brand;
    
    public Vehicle(String brand) {
        this.brand = brand;
    }
    
    public String getBrand() {
        return brand;
    }
}

public class Car extends Vehicle {
    private int doors;
    
    public Car(String brand, int doors) {
        super(brand);  // Harus berada di baris pertama
        this.doors = doors;
    }
}

Kamu juga dapat menggunakan super untuk memanggil method induk, yang sangat berguna terutama ketika subclass memiliki method dengan nama yang sama:

public class Animal {
    public void makeSound() {
        System.out.println("Some sound");
    }
}

public class Cat extends Animal {
    public void makeSound() {
        super.makeSound();  // Memanggil versi Animal
        System.out.println("Meow!");
    }
}

Anggap super sebagai kebalikan dari this. Sementara this merujuk ke object saat ini, super merujuk ke bagian class induk dari object tersebut. Perbedaan ini menjadi sangat penting saat membangun hierarki class yang class turunannya perlu memperluas, bukan sepenuhnya menggantikan, perilaku class induk.

challenge icon

Tantangan

Mudah

Mari buat sistem peralatan yang menunjukkan cara subclass menggunakan super untuk memanggil konstruktor parent dan memperluas perilaku method parent.

Kamu akan membuat tiga file untuk mengatur kodemu:

  • Appliance.java: Buat class parent yang mewakili peralatan rumah tangga apa pun. Class ini harus memiliki:
    • Field private untuk brand peralatan (String)
    • Field private untuk wattage (int)
    • Konstruktor yang menerima kedua nilai dan menginisialisasinya
    • Method getBrand() yang mengembalikan brand
    • Method getWattage() yang mengembalikan wattage
    • Method getInfo() yang mengembalikan: [brand] - [wattage]W
  • WashingMachine.java: Buat subclass yang mewarisi Appliance. Mesin cuci memiliki semua yang dimiliki peralatan, ditambah fitur khususnya sendiri:
    • Field private untuk capacity (int) yang mewakili kapasitas muatan dalam kg
    • Konstruktor yang menerima brand, wattage, dan capacity, gunakan super(brand, wattage) untuk menginisialisasi bagian parent, lalu tetapkan capacity
    • Method getCapacity() yang mengembalikan capacity
    • Method getInfo() yang memanggil getInfo() milik parent menggunakan super.getInfo() dan memperluasnya agar mengembalikan: [parent info], Capacity: [capacity]kg
  • Main.java: Buat sebuah WashingMachine dan tampilkan informasi lengkapnya. Kamu akan menerima tiga input: brand (String), wattage (int), dan capacity (int). Cetak hasil pemanggilan getInfo() pada washing machine-mu.

Kamu akan menerima tiga input: nama brand, wattage, dan capacity.

Perhatikan bahwa super memiliki dua fungsi di sini: memanggil konstruktor parent untuk menginisialisasi field yang diwarisi, dan memanggil method parent untuk mengembangkan perilakunya, bukan menggantinya sepenuhnya.

Coba sendiri

import java.util.Scanner;

class Main {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        
        // Baca input
        String brand = scanner.nextLine();
        int wattage = scanner.nextInt();
        int capacity = scanner.nextInt();
        
        // TODO: Buat object WashingMachine dengan nilai input
        
        // TODO: Cetak hasil pemanggilan getInfo() pada mesin cuci
    }
}
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