Kelas dan Metode Abstrak Java: Panduan Lengkap
Kelas dan Metode Abstrak Java
Tutorial ini menyediakan eksplorasi yang jelas dan berdasarkan contoh tentang kelas dan metode abstrak Java, dan menjelaskan bagaimana abstraksi diimplementasikan di Java.
Kelas Abstrak Java
Di Java, kelas abstrak tidak dapat diinstantiasi. Kata kunci abstract menandai kelas sebagai abstrak. Misalnya,
// membuat kelas abstrak abstract class Language { // fields and methods } ... // coba buat objek Language // melempar kesalahan Language obj = new Language();
Sebuah kelas abstrak dapat berisi metode konkret (reguler) dan metode abstrak. Misalnya,
abstract class Language { // metode abstrak abstract void method1(); // metode reguler void method2() { System.out.println("Ini adalah metode reguler"); } }
Untuk selengkapnya tentang metode reguler, lihat Java methods.
Metode Abstrak Java
Sebuah metode abstrak tidak ada badan; ia mendeklarasikan kontrak yang harus dipenuhi oleh subclass. Ia didefinisikan dengan kata kunci abstract, misalnya,
abstract void display();
Karena tidak memiliki badan, pernyataan diakhiri dengan titik koma. Jika suatu kelas mendeklarasikan metode abstrak, kelas itu sendiri harus dideklarasikan abstrak, jika tidak kompiler akan melempar kesalahan:
// error // kelas harus abstrak class Language { // metode abstrak abstract void method1(); }
Contoh: Kelas dan Metode Abstrak Java
Meskipun kelas abstrak tidak dapat diinstantiasi secara langsung, subclass konkret dapat memperluasnya dan menggunakan anggotanya. Misalnya,
abstract class Language { public void display() { System.out.println("Ini adalah Java Programming"); } } class Main extends Language { public static void main(String[] args) { Main obj = new Main(); obj.display(); } }
Output
Ini adalah Java programming
Di sini, kelas abstrak Language mendefinisikan metode konkret display(). Subclass Main mewarisi metode tersebut dan memanggilnya melalui instance-nya.
Mengimplementasikan Metode Abstrak
Saat kelas abstrak mendeklarasikan metode abstrak, setiap subclass konkret harus menyediakan implementasi. Misalnya,
abstract class Animal { abstract void makeSound(); public void eat() { System.out.println("Saya bisa makan."); } } class Dog extends Animal { public void makeSound() { System.out.println("Guk guk"); } } class Main { public static void main(String[] args) { Dog d1 = new Dog(); d1.makeSound(); d1.eat(); } }
Output
Guk guk Saya bisa makan.
Subclass Dog mengimplementasikan metode abstrak makeSound(), sambil mewarisi metode konkret eat().
Catatan: Jika Dog tidak meng-override makeSound(), ia harus sendiri dideklarasikan abstrak.
Mengakses Konstruktor Kelas Abstrak
Kelas abstrak dapat mendefinisikan konstruktor seperti kelas biasa. Subclass memanggil konstruktor superclass menggunakan super(). Misalnya,
abstract class Animal { Animal() { // inisialisasi logika } } class Dog extends Animal { Dog() { super(); // inisialisasi tambahan } }
Ingat bahwa super() harus menjadi pernyataan pertama dalam konstruktor subclass.
Abstraksi Java
Kelas dan metode abstrak adalah alat utama untuk mencapai abstraksi di Java. Abstraksi menyembunyikan detail implementasi yang tidak perlu, menyajikan hanya antarmuka yang penting kepada pengguna. Ini menyederhanakan sistem kompleks dan mempromosikan fleksibilitas.
Misalnya, rem sepeda motor melakukan fungsi tingkat tinggi yang sama—mengurangi kecepatan sepeda motor—sedangkan mekanisme internalnya dapat berbeda di setiap model.
Contoh 3: Abstraksi Java
abstract class MotorBike { abstract void brake(); } class SportsBike extends MotorBike { public void brake() { System.out.println("SportsBike Brake"); } } class MountainBike extends MotorBike { public void brake() { System.out.println("MountainBike Brake"); } } class Main { public static void main(String[] args) { MountainBike m1 = new MountainBike(); m1.brake(); SportsBike s1 = new SportsBike(); s1.brake(); } }
Output:
MountainBike Brake SportsBike Brake
Setiap subclass konkret menyediakan implementasi brake() sendiri, menggambarkan bagaimana abstraksi memisahkan antarmuka dari implementasi.
Catatan: Antarmuka juga dapat digunakan untuk mencapai abstraksi di Java.
Poin Utama yang Harus Diingat
- Gunakan kata kunci
abstract untuk mendeklarasikan kelas dan metode abstrak. - Metode abstrak tidak ada badan; diakhiri dengan titik koma.
- Kelas yang berisi metode abstrak harus sendiri abstrak.
- Kelas abstrak tidak dapat diinstantiasi secara langsung.
- Subclass konkret mewarisi kelas abstrak dan menyediakan implementasi untuk metode abstrak.
- Subclass harus meng-override semua metode abstrak kecuali mereka dideklarasikan abstrak.
- Anggota statis dari kelas abstrak dapat diakses melalui nama kelas:
Animal.staticMethod();