October 28, 2026
PBO: Abstraksi dan Kelas Abstrak
Hi! Another praktikum here. Di pertemuan ke 9 ini, kita akan membahas tentang abstraksi dan kelas abstrak. Bagaimana konsep danβ¦

By RosifaAulia
4 min read
Hi! Another praktikum here. Di pertemuan ke 9 ini, kita akan membahas tentang abstraksi dan kelas abstrak. Bagaimana konsep dan implementasi kodenya? Check this out ya!
Dasar Teori
- Abstraksi
Abstraksi merupakan salah satu pilar Pemrograman Berorientasi Objek yang tujuannya adalah untuk menyembunyikan detail implementasi dan hanya menampilkan yang penting saja dari suatu objek. Abstraksi membantu kita memecah sistem yang kompleks menjadi lebih sederhana. Dengan abstraksi kita hanya akan berfokus pada apa yang dilakukan objek. Misal, pada objek kendaraan, kita tidak perlu tau bagaimaa mesin internalnya bekerja, kita hanya berfokus bahwa kendaraan tersebut bisa berjalan.
2. Kelas Abstrak
Merupakan kelas yang tidak bisa diinstansi langsung. Kelas ini hanya digunakan sebagai blueprint bagi kelas turunannya. Karakteristik kelas abstrak:
- Tidak dapat dibuat objeknya secara langsung
- Bisa memiliki metode abstrak (metode tanpa implementasi) maupun metode dengan implementasi.
- Subclass yang mengimplementasikan kelas abstrak wajib mengimplementasikan semua metode abstrak yang ada.
Praktikum
- Buka Netbeans dan buat project baru dengan nama
PraktikumPBO_9. - Buat package baru bernama
praktikum9. - Studi kasus: Kendaraan
3.1 Buat kelas abstrak kendaraan dengan kode seperti berikut:
abstract class Kendaraan {
//metode abstrak
abstract void berjalan();
//Metode dengan implementasi
void info() {
System.out.println("Ini adalah kendaraan.");
}
}abstract class Kendaraan {
//metode abstrak
abstract void berjalan();
//Metode dengan implementasi
void info() {
System.out.println("Ini adalah kendaraan.");
}
}Penjelasan kode:
abstract class Kendaraanβ membuat kelas abstrak kendaraan, kelas ini hanya blueprint (cetakan) dan tidak bisa dibuat objeknya.abstract void berjalan()β metode abstrak yang tidak ada isinya, sengaja dikosongkan karena tiap kelas turunannya memiliki implementasi yang berbeda-beda. Kelas turunan harus menulis ulang dengan menggunakan override.void info()β metode yang sudah ada isinya, tiap kelas turunan akan mewarisi ini, jadi tidak perlu ditulis ulang.
3.2 Buat kelas turunan Mobil dan Sepeda dengan kode seperti berikut:
//Kelas turunan
class Mobil extends Kendaraan {
@Override
void berjalan() {
System.out.println("Mobil sedang berjalan dengan cepat.");
}
}
class Sepeda extends Kendaraan {
@Override
void berjalan() {
System.out.println("Sepeda sedang berjalan dengan pelan.");
}
}//Kelas turunan
class Mobil extends Kendaraan {
@Override
void berjalan() {
System.out.println("Mobil sedang berjalan dengan cepat.");
}
}
class Sepeda extends Kendaraan {
@Override
void berjalan() {
System.out.println("Sepeda sedang berjalan dengan pelan.");
}
}Penjelasan kode:
class Mobil extends Kendaraanβ kelas turunan bernama Mobil. Mobil otomatis mewarisi metode info() dari kelas Kendaraan.void berjalan()β mengimplementasikan metode berjalan() dengan caranya sendiri.class Sepeda extends Kendaraanβ kelas turunan bernama Sepeda yang otomatis mewarisi metode info() dari kelas Kendaraan.
3.3 Buat kelas main dengan kode seperti berikut
public class Main {
public static void main(String[] args) {
Kendaraan mobil = new Mobil();
Kendaraan sepeda = new Sepeda();
mobil.berjalan();
mobil.info();
sepeda.berjalan();
sepeda.info();
}
}public class Main {
public static void main(String[] args) {
Kendaraan mobil = new Mobil();
Kendaraan sepeda = new Sepeda();
mobil.berjalan();
mobil.info();
sepeda.berjalan();
sepeda.info();
}
}Penjelasan kode:
public class Mainβ kelas main tempat kode akan dijalankan.public static void main(String[] args)β titik awal program mulai dijalankan oleh java.Kendaraan mobil = new Mobil()β membuat objek baru Mobil yang ditampung oleh variabel Kendaraan. Sama halnya seperti Kendaraan sepeda.mobil.berjalan()dansepeda.berjalan()β memanggil metode berjalan() dan menjalankan sesuai implementasi masing-masing.mobil.info()dansepeda.info()β memanggil metode info() yang mewarisi kendaraan jadi teksnya sama.
Output yang keluar dari kode-kode program di atas yaitu sebagai berikut:
3.4 Cobalah untuk membuat objek lain dari kelas kendaraan, apakah bisa?
Tidak bisa, karena kelas Kendaraan merupakan kelas abstrak, tidak bisa diinstansi.
Tugas Modul 9
- Membuat kelas abstrak Hewan dengan metode abstrak suara().
- Membuat kelas turunan Kucing dan Anjing yang mengimplementasikan metode suara() sesuai dengan nama hewan tersebut.
- Contoh output yang diharapkan: Kucing mengeluarkan suara: Meong, Anjing mengeluarkan suara: Guk Guk.
//Kelas abstrak Hewan
abstract class Hewan {
abstract void suara();
}
//Kelas turunan
class Kucing extends Hewan {
@Override
void suara() {
System.out.println("Kucing mengeluarkan suara: Meong");
}
}
class Anjing extends Hewan {
@Override
void suara() {
System.out.println("Anjing mengeluarkan suara: Guk Guk");
}
}
public class Main2 {
public static void main(String[] args) {
Hewan kucing = new Kucing();
Hewan anjing = new Anjing();
kucing.suara();
anjing.suara();
}
}//Kelas abstrak Hewan
abstract class Hewan {
abstract void suara();
}
//Kelas turunan
class Kucing extends Hewan {
@Override
void suara() {
System.out.println("Kucing mengeluarkan suara: Meong");
}
}
class Anjing extends Hewan {
@Override
void suara() {
System.out.println("Anjing mengeluarkan suara: Guk Guk");
}
}
public class Main2 {
public static void main(String[] args) {
Hewan kucing = new Kucing();
Hewan anjing = new Anjing();
kucing.suara();
anjing.suara();
}
}Penjelasan kode:
abstract class Hewanβ kelas abstrak yang tidak dapat dibuat objeknya secara langsung. Hanya berfungsi sebagai blueprint (cetakan).abstract void suara()β metode abstrak tanpa isi yang akan diwariskan ke kelas turunannya namun dengan suaranya masing-masing.class Kucing extends Hewanβ kelas turunan yang mengoverride metode suara() dan mengisi dengan implementasinya sendiri. Sama halnya denganclass Anjing extends Hewan.public class Main2β kelas utama main tempat java menjalankan kode program.Hewan kucing = new Kucing()β membuat objek baru kucing dengan variabel Hewan. Sama denganHewan anjing = new Anjing().kucing.suara()dananjing.suara()β memanggil metode suara yang sama namun yang dijalankan sesuai versi masing-masing.
Kesimpulan: Berdasarkan praktikum 9 ini, dapat disimpulkan bahwa kelas abstrak hanya digunakan sebagai kerangka dasar/blueprint/cetakan saja dan tidak bisa diinstansi. Agar dapat digunakan, tiap kelas abstrak harus memiliki kelas turunan yang akan mengimplementasikan metode abstraknya. Seperti pada studi kasus hewan di tugas praktikum 9 ini, kelas Hewan hanya digunakan sebagai blueprint saja yang memiliki metode abstrak berupa suara(). Kelas turunannya yaitu Kucing dan Anjing mewarisi metode suara() dengan isi yang berbeda-beda sesuai suara masing-masing. Objek dibuat menggunakan variabel bertipe kelas induk, sehingga metode yang dijalankan mengikuti objek aslinya.
Okay that's all untuk praktikum kali ini, thanks for reading and see u next week!
Reference:
Imam Adi Nata. (2026). Modul 9: Abstraksi dan Kelas Abstrak.
Github:
GitHub - Rosifaaulia/Praktikum-PBO Contribute to Rosifaaulia/Praktikum-PBO development by creating an account on GitHub.