Java - Kelas dan Antarmuka yang Ditutup

Halo semua, pengembang Java masa depan! Hari ini, kita akan memulai perjalanan yang menarik ke dunia Kelas dan Antarmuka yang Ditutup di Java. Jangan khawatir jika kamu baru mengenal pemrograman - kita akan memulai dari dasar-dasar dan maju ke atas. Jadi,Ambil secangkir kopi (atau minuman kesukaanmu), dan mari kita melompat masuk!

Java - Sealed Classes

Apa itu Kelas dan Antarmuka yang Ditutup?

Bayangkan jika kamu sedang membangun rakit penyelamat dan kamu ingin mengontrol siapa yang bisa menambahkan ruangan kepadanya. Itulah yang hampir sama dengan apa yang kelas dan antarmuka yang ditutup lakukan di Java - mereka memungkinkan kamu untuk mengontrol jenis kelas mana yang dapat mengekstensi atau menerapkan mereka. Itu seperti memiliki daftar VIP untuk kode kamu!

Masalah yang Dijawab oleh Kelas yang Ditutup

Sebelum kita punya kelas yang ditutup, siapa saja dapat mengekstensi kelas kamu atau menerapkan antarmuka kamu. Itu seperti mengadakan pesta dan tidak tahu siapa yang mungkin datang! Kelas yang ditutup memberikan kamu kontrol seperti daftar tamu.

Cara Membuat Kelas yang Ditutup

Mari kita mulai dengan contoh sederhana:

public sealed class Hewan permits Anjing, Kucing, Burung {
// Kode kelas Hewan di sini
}

Dalam contoh ini, Hewan adalah kelas kita yang ditutup. Kata kunci permits adalah seperti pihak pengawal, hanya mengizinkan kelas Anjing, Kucing, dan Burung untuk mengekstensi Hewan.

Mengekstensi Kelas yang Ditutup

Sekarang, mari lihat bagaimana kita dapat membuat kelas yang mengekstensi kelas Hewan kita:

public final class Anjing extends Hewan {
// Kode kelas Anjing di sini
}

public final class Kucing extends Hewan {
// Kode kelas Kucing di sini
}

public non-sealed class Burung extends Hewan {
// Kode kelas Burung di sini
}

Perhatikan kata kunci final dan non-sealed. Ini penting:

  • final: Ini berarti kelas tidak dapat ditekstensi lebih jauh. Itu seperti mengatakan, "Pesta berhenti di sini!"
  • non-sealed: Ini mengizinkan kelas untuk ditekstensi oleh kelas lain. Itu seperti mengatakan, "Masuk saja, semakin banyak semakin baik!"

Antarmuka yang Ditutup

Sama seperti kelas, antarmuka juga dapat ditutup. Ini adalah contoh:

public sealed interface Kendaraan permits Mobil, SepedaMotor, Sepeda {
// Kode antarmuka Kendaraan di sini
}

Dan ini adalah bagaimana kita mengimplementasikan antarmuka ini:

public final class Mobil implements Kendaraan {
// Kode kelas Mobil di sini
}

public final class SepedaMotor implements Kendaraan {
// Kode kelas SepedaMotor di sini
}

public non-sealed class Sepeda implements Kendaraan {
// Kode kelas Sepeda di sini
}

Mengapa Menggunakan Kelas dan Antarmuka yang Ditutup?

  1. Keselamatan Tipe: Kamu tahu persis jenis kelas mana yang dapat mengekstensi atau menerapkan kelas atau antarmuka kamu yang ditutup.
  2. Desain Lebih Baik: Ini membantu kamu membuat hirarki kelas yang lebih terstruktur dan sengaja.
  3. Pematching Pola: Ini bekerja sangat baik dengan pematching pola dalam ekspresi switch (topik untuk hari lain, tetapi percayalah, itu keren!).

Contoh Dunia Nyata

Mari membuat contoh yang lebih kompleks. Bayangkan jika kita membuat permainan sederhana dengan jenis karakter yang berbeda:

public sealed abstract class KarakterPermainan permits Petarung, Penyihir, Pemanah {
protected String nama;
protected int kesehatan;

public KarakterPermainan(String nama, int kesehatan) {
this.nama = nama;
this.kesehatan = kesehatan;
}

public abstract void serang();
}

public final class Petarung extends KarakterPermainan {
public Petarung(String nama) {
super(nama, 100);
}

@Override
public void serang() {
System.out.println(nama + " memukul pedang besar!");
}
}

public final class Penyihir extends KarakterPermainan {
public Penyihir(String nama) {
super(nama, 75);
}

@Override
public void serang() {
System.out.println(nama + " mengeluarkan sihir kuat!");
}
}

public non-sealed class Pemanah extends KarakterPermainan {
public Pemanah(String nama) {
super(nama, 80);
}

@Override
public void serang() {
System.out.println(nama + " menembakkan panah yang presisi!");
}
}

Dalam contoh ini, kita telah membuat kelas abstrak yang ditutup KarakterPermainan dengan tiga subclass yang diizinkan: Petarung, Penyihir, dan Pemanah. Setiap subclass memiliki implementasi sendiri dari metode serang().

Mari lihat bagaimana kita dapat menggunakan kelas ini:

public class Permainan {
public static void main(String[] args) {
KarakterPermainan[] karakter = {
new Petarung("Conan"),
new Penyihir("Gandalf"),
new Pemanah("Legolas")
};

for (KarakterPermainan karakterPermainan : karakter) {
karakterPermainan.serang();
}
}
}

Ketika kamu menjalankan kode ini, kamu akan lihat:

Conan memukul pedang besar!
Gandalf mengeluarkan sihir kuat!
Legolas menembakkan panah yang presisi!

Kesimpulan

Kelas dan antarmuka yang ditutup adalah alat yang kuat di Java yang memungkinkan kamu untuk membuat hirarki kelas yang lebih dikontrol dan sengaja. Mereka seperti pihak pengawal di kode kamu, memastikan hanya kelas yang benar yang bisa bergabung dengan pesta!

Ingat, pemrograman adalah tentang menyelesaikan masalah dan membuat struktur. Kelas dan antarmuka yang ditutup hanya alat lain di rak kamu untuk membantu kamu menulis kode yang lebih bersih dan mudah dipelihara.

Terus latihan, terus coding, dan yang paling penting, bersenang-senang! Sebelum kamu sadar, kamu sudah menutup kelas seperti pro. Sampai jumpa berikutnya, happy coding!

Credits: Image by storyset