
Tutorial Java OOP: Mengenal Class Abstrak dan Cara Pakainya
Saat mendengar kata “Kendaraan”, apa yang kamu pikirkan pertama kali?
Motor? Mobil? Pesawat?
Apapun itu, semuanya adalah kendaraan.
Dan kita juga sudah tahu, kendaraan pasti bisa berjalan.
Namun, bagaimana kalau saya bilang:
“Kendaraan berjalan”
Mungkin kamu akan bertanya: “Cara jalannya gimana? Terbang atau jalan di aspal?”
Saya juga tidak tahu.
Inilah yang disebut abstraksi. Kata “Kendaraan” sendiri masih bersifat abstrak. Tapi kita bisa membayangkan konsep kendaraan itu seperti apa.
Jika saya bilang: “Mobil bejalan”
Kamu pasti sudah tahu maksud saya.
Mobil adalah benda konkrit atau nyata, sedangkan kendaran masih abstrak.
Prinsip abstraksi ini juga ada dalam OOP dan kita sebenarnya sudah pernah menggunakannya.
Namun, tidak sadar aja kalau itu adalah abstraksi.
Nah, di Java sendiri, ada yang namanya class abstrak untuk membuat abstraksi.
Apa itu class abstrak? Lalu, bagaimana cara pakainya?
Mari kita bahas!
Apa itu Class Abstrak?
Class abstrak adalah class yang masih dalam bentuk abstrak. Karena bentuknya masih abstrak, dia tidak bisa dibuat langsung menjadi objek.
Sebuah class agar dapat disebut class abstrak setidaknya memiliki satu atau lebih method abstrak.
Method abstrak adalah method yang tidak memiliki implementasi atau tidak ada bentuk konkritnya.
Bingung?
Begini saja:
Method abstrak itu adalah method yang tidak memiliki isi, cuma ada nama saja.
// ini abstrak method
void sayHello();
// ini bukan abstrak method karena
// punya implementasi di body method
void greeting(){
System.out.println("Hello Java");
}
Class yang menggunakan method ini secara otomatis akan menjadi class abstrak.
Mengapa Harus Pakai Class Abstrak?
Kita tahu, class abstrak memang belum bisa digunakan secara langsung. Karena itu, agar class abstrak dapat digunakan, maka ia harus dibuat bentuk konkritnya.
Cara membuat class abstrak menjadi konkrit adalah dengan membuat implementasi dari method-method yang masih abstrak. Ini bisa kita lakukan dengan pewarisan (inheritance).
Class abstrak biasanya digunakan sebagai class induk dari class-class yang lain. Class anak akan membuat versi konkrit dari class abstrak.
Lalu pertanyaanya: “Mengapa sih class harus dibuat menjadi abstrak? Kan bisa saja kita pakai class yang biasa.”
Iya, bisa-bisa saja. Tetapi, pada suatu kondisi tertentu, class induk tidak ingin kita buat sebagai objek karena kode methodnya belum jelas mau diimplementasikan seperti apa.
Maka, class ini sebaiknya dijadikan abstrak.
Biar makin paham, coba perhatikan contoh berikut:
class Database {
String getTableName(){
return null;
}
}
class MySQLDatabase extends Database {
@override
String getTableName(){
return this.sql("SELECT table_name FROM database.tabel")
}
}
Kedua class tersebut merupakan class biasa. Sekarang mari kita coba buat objek dengan class Database
.
Database db = new Database();
Ini akan valid, tapi sebenarnya objek db
tidak bisa digunakan.
Saat kita memanggil method getTableName()
si class Database
akan bingung.
Mengapa? Karena belum jelas bagaimana metode untuk mengambil nama tabel di database.
Selain itu, database apa yang akan dipakai?
Karena itu, class Database
sebaiknya dibuat menjadi abstrak agar tidak bisa digunakan untuk membuat objek.
Oke. Lalu, bagaimana cara membuat class menjadi abstrak?
Cara Membuat Abstrak Class di Java
Cara membuat class abstrak adalah dengan memberikan kata kunci abstract
kepada class dan method yang ingin dijadikan abstrak.

Contoh:
abstract class Database {
abstract String getDatabaseName();
abstract String getTableName();
}
Gampang, kan?
Sekarang mari kita coba contohnya dalam program.
Contoh Program Class Abstrak
Baiklah, kita akan coba latihan dengan contoh yang sudah pernah kita bua, yakni bangung datar.
Coba perhatikan class diagram berikut:

Class Shape
adalah class abstrak, karena dia punya method abstrak getArea()
(hitung luas).
Jika kita membuat objek dengan class Shape
dan memanggil method getArea()
, maka class Shape
akan bingung.
Shape atau bentuk bangun datar yang mau dihitung luasnya seperti apa? Rumusnya gimana?
Karena itu, class ini kita jadikan abstrak. Soalnya, belum jelas cara menghitung luasnya.
Kita juga tahu, kalau Shape atau bangun datar pasti memiliki luas. Namun, cara menghitungnya berbeda-beda.
Nah, sekarang mari kita coba dalam kode program.
Buatlah proyek baru di Netbeans dengan nama ContohAbstrak
.

Setelah itu, pada <default package>
buat class baru bernama Shape
dan isi kodenya sebagai berikut:
public abstract class Shape {
String color;
void setColor(String color){
this.color = color;
}
String getColor(){
return this.color;
}
abstract float getArea();
}
Berikutnya, buat class Triangle
. Class ini merupakan turunan dari class Shape
.
Berikut ini kode class Triangle
:
public class Triangle extends Shape {
private float base;
private float height;
public Triangle(int base, int height) {
this.base = base;
this.height = height;
}
@Override
float getArea() {
return 0.5f * base * height;
}
}
Setelah itu, buat satu lagi turunan dari class Shape
, yakni Circle
.
Berikut ini kode untuk class Circle
:
public class Circle extends Shape {
private float radius;
public Circle(float radius) {
this.radius = radius;
}
@Override
float getArea() {
return (float) (Math.PI * radius * radius);
}
}
Terakhir, buat class Main
untuk mencoba membuat objek dengan class yang sudah dibuat.
public class Main {
public static void main(String[] args) {
// membuat objek dari class Triangle
Shape segitiga = new Triangle(4, 5);
// membuat objek dari class Circle
Shape lingkaran = new Circle(10);
System.out.println("Luas Segitiga: " + segitiga.getArea());
System.out.println("Luas Lingkaran: " + lingkaran.getArea());
}
}
Coba perhatikan objek segitiga
dan lingkaran
! Kedua objek ini memiliki tipe yang sama yakni Shape
, tapi mereka dibuat dari class yang berbeda.
Nah, sekarang coba jalankan programnya. Maka hasilnya:

Apa Bedanya Class Abstrak dengan Interface?
Class abstrak dan interface sama-sama digunakan untuk membuat abstraksi.
Keduanya hampir memiliki sifat yang sama. Namun, terdapat perbedaan di antara keduanya.
Apa itu?
- di class abstrak kita bisa baut properti atau variabel sedangkan di interface kita cuma bisa buat konstanta saja
- di class abstrak kita bisa implementasikan kode method seperti class biasa, sedangkan di interface harus menggunakan
default
- di class abstrak dapat memiliki member
private
danprotected
sedangkan interface harus publik semua - Class abstrak diimpelentasikan dengan pewarisan (
extends
), sedangkan interaface menggunakanimplements
Baca juga: Tutorial Java OOP: Mengenal Class Anonymous di Java | Tutorial Java OOP: Mengenal Lambda Expression untuk Membuat Fungsi Anonymous di Java | Apa Saja yang Baru di Java 11?
Recent Post
-
Cara Membuat Struktur Website yang SEO Friendly
-
15 Shortcut Visual Studio Code yang Efisien
-
Pentingnya SSL/HTTPS untuk Keamanan Website
-
Panduan Sederhana Menggunakan GitLab
-
Mengenali JAMstack dan Keunggulannya Secara Mendalam
-
Rekomendasi Tools Gratis untuk Cek Page Speed Website
-
Perbedaan Domain dan Hosting serta Perannya dalam Website
-
Website vs Marketplace, Mana yang Lebih Efektif untuk Bisnis
Categories
- Business (139)
- Company Profile (3)
- Developer Connect (126)
- HR and L&D (23)
- Human Reasearch and Development (15)
- Landing Page (2)
- Marketing (27)
- Media Relations (72)
- News (39)
- Public Relations (48)
- Story (8)
- Technology (284)
- Tips and Trick (67)
- Toko Online (2)
- Uncategorized (25)
- Video & Tips (13)
- Wesclic (30)
Tags
Read More
Cara Membuat Struktur Website yang SEO Friendly
titah 15/04/2025 0Struktur website yang SEO-friendly sangat penting karena memudahkan Google menelusuri halaman dan memberikan kenyamanan bagi pengunjung. Website yang mudah dipahami memiliki peluang lebih besar untuk…
15 Shortcut Visual Studio Code yang Efisien
titah 15/04/2025 0Pernah merasa lambat saat menulis kode karena terlalu banyak langkah yang diulang? Tanpa cara kerja…
Pentingnya SSL/HTTPS untuk Keamanan Website
titah 15/04/2025 0Dalam dunia digital yang terus berkembang, menjaga keamanan website menjadi hal yang sangat penting. Salah…
Panduan Sederhana Menggunakan GitLab
titah 15/04/2025 0Tanpa alat yang tepat, mengelola proyek perangkat lunak bisa jadi rumit dan memakan waktu. GitLab…
Mengenali JAMstack dan Keunggulannya Secara Mendalam
titah 14/04/2025 0Pernah mendengar istilah JAMstack? Dalam dunia pengembangan website, JAMstack merupakan salah satu pendekatan arsitektur web…
Categories
- Business (139)
- Company Profile (3)
- Developer Connect (126)
- HR and L&D (23)
- Human Reasearch and Development (15)
- Landing Page (2)
- Marketing (27)
- Media Relations (72)
- News (39)
- Public Relations (48)
- Story (8)
- Technology (284)
- Tips and Trick (67)
- Toko Online (2)
- Uncategorized (25)
- Video & Tips (13)
- Wesclic (30)
Popular Tags