Abstract Class dalam Java
Abstract class dalam Java adalah kelas yang tidak dapat diinstansiasi langsung. Artinya, Anda tidak dapat membuat objek dari kelas abstrak. Kelas abstrak berfungsi sebagai blueprint atau template untuk kelas lain yang ingin mewarisi sifat-sifatnya.
Mengapa kita menggunakan abstract class?
- Polimorfisme: Abstract class memungkinkan Anda untuk mendefinisikan metode abstrak yang harus diimplementasikan oleh kelas anak. Ini membantu dalam mencapai polimorfisme, yaitu kemampuan objek untuk mengambil banyak bentuk.
- Pemisahan Concern: Abstract class membantu dalam memisahkan concern dengan mendefinisikan metode umum yang dapat digunakan oleh kelas anak.
- Kode Reusability: Abstract class meningkatkan reusability kode dengan memungkinkan kelas anak untuk mewarisi metode dan atributnya.
Contoh Abstract Class
abstract class Shape {
// Atribut yang diwariskan ke kelas anak
private String color;
// Konstruktor
public Shape(String color) {
this.color = color;
}
// Metode abstrak yang harus diimplementasikan oleh kelas anak
public abstract double calculateArea();
// Metode non-abstrak yang dapat diakses oleh kelas anak
public String getColor() {
return color;
}
}
Contoh Implementasi Abstract Class
class Circle extends Shape {
private double radius;
public Circle(String color, double radius) {
super(color);
this.radius = radius;
}
// Implementasi metode abstrak
@Override
public double calculateArea() {
return Math.PI * radius * radius;
}
}
class Rectangle extends Shape {
private double length;
private double width;
public Rectangle(String color, double length, double width) {
super(color);
this.length = length;
this.width = width;
}
// Implementasi metode abstrak
@Override
public double calculateArea() {
return length * width;
}
}
Cara Menggunakan Abstract Class
- Deklarasikan kelas sebagai abstract.
- Definisikan metode abstrak.
- Buat kelas anak yang mewarisi kelas abstrak.
- Implementasikan metode abstrak di kelas anak.
Perbedaan Abstract Class dan Interface
Fitur | Abstract Class | Interface |
---|---|---|
Instansiasi | Tidak dapat diinstansiasi | Tidak dapat diinstansiasi |
Metode | Dapat memiliki metode abstrak dan non-abstrak | Hanya memiliki metode abstrak |
Atribut | Dapat memiliki atribut | Tidak dapat memiliki atribut |
Warisan | Mendukung pewarisan tunggal | Mendukung pewarisan berganda |
Implementasi | Membutuhkan implementasi metode abstrak di kelas anak | Membutuhkan implementasi semua metode di kelas yang mengimplementasikan interface |
Kesimpulan
Abstract class adalah alat yang penting dalam pemrograman berorientasi objek (OOP). Mereka menyediakan cara yang baik untuk mencapai polimorfisme, memisahkan concern, dan meningkatkan reusability kode.