Lompat ke konten utama

Kompetisi Ajak Teman: hadiah total Rp1.000.000 tunai untuk 3 pengajak terbanyak. Berakhir 29 November 2026. Ikut kompetisi

←

Java Dasar: Membaca dan Memperbaiki Kode

Pelajaran 14 dari 16

Objek, interface, dan exception

Interface: satu janji, banyak kelas

Setelah pelajaran ini kamu bisa membaca interface dan kelas yang mengimplementasikannya, menebak method mana yang dijalankan, dan memperbaiki galat implementasi.

±13 menitDiperiksa 5 Okt 2026

Materi

Interface mendaftar method yang wajib dimiliki sebuah kelas, tanpa isinya. Kelas yang menulis implements NamaInterface berjanji menyediakan semua method itu. Variabel boleh bertipe interface, dan isinya objek dari kelas mana pun yang mengimplementasikannya; method yang dijalankan adalah milik objeknya, bukan milik tipe variabelnya.

interface Ongkir {
    int biaya(int beratKg);
}

class Reguler implements Ongkir {
    public int biaya(int beratKg) {
        return 9000 * beratKg;
    }
}

class Kilat implements Ongkir {
    public int biaya(int beratKg) {
        return 15000 + 9000 * beratKg;
    }
}

Dengan Ongkir o = new Kilat();, pemanggilan o.biaya(2) menjalankan versi Kilat dan menghasilkan 33000. Kode yang memakai Ongkir tidak perlu tahu kelas mana yang ada di baliknya, sehingga jasa kirim baru cukup ditambah sebagai kelas baru. Interface sendiri tidak bisa dibuat objeknya; new Ongkir() ditolak javac dengan error: Ongkir is abstract; cannot be instantiated.

Latihan

0/3 lulus

Jawaban diperiksa di server. Lulus berarti kamu memahami contohnya, bukan penilaian seluruh pekerjaanmu.

Latihan 1 dari 3

Apa keluaran program ini? Tanda | di pilihan memisahkan baris keluaran.

import java.util.List;

public class Kirim {
    public static void main(String[] args) {
        List<Ongkir> pilihan = List.of(new Reguler(), new Kilat());
        for (Ongkir o : pilihan) {
            System.out.println(o.biaya(2));
        }
    }
}

interface Ongkir {
    int biaya(int beratKg);
}

class Reguler implements Ongkir {
    public int biaya(int beratKg) {
        return 9000 * beratKg;
    }
}

class Kilat implements Ongkir {
    public int biaya(int beratKg) {
        return 15000 + 9000 * beratKg;
    }
}
Pilih satu jawaban

Latihan 2 dari 3

javac menolak kelas Reguler. Perbaikan mana yang membuat program terkompilasi?

public class Kirim {
    public static void main(String[] args) {
        Ongkir o = new Reguler();
        System.out.println(o.biaya(3));
    }
}

interface Ongkir {
    int biaya(int beratKg);
}

class Reguler implements Ongkir {
    int biaya(int beratKg) {
        return 9000 * beratKg;
    }
}
Pilih satu jawaban

Latihan 3 dari 3

Mengapa javac menolak kode ini?

public class Kirim {
    public static void main(String[] args) {
        Ongkir o = new Reguler();
        System.out.println(o.biaya(3));
    }
}

interface Ongkir {
    int biaya(int beratKg);
    int estimasiHari();
}

class Reguler implements Ongkir {
    public int biaya(int beratKg) {
        return 9000 * beratKg;
    }
}
Pilih satu jawaban

Catatanmu

Memuat catatan…

tersimpan otomatis, ikut tercetak · 0/4.000

Luluskan semua latihan dulu untuk menandai pelajaran ini selesai.

Lanjutkan ke

Sebagian materi kelas ini diadaptasi dari Exercism — jalur Java (concept exercises) (MIT).