Java Abstraction merupakan salah satu prinsip dasar dalam pemrograman Java berbasis objek (OOP). Pada dasarnya abstraction merupakan sebuah proses yang digunakan untuk menyembunyikan detail dari implementasi dan hanya menunjukkan sisi fungsionalitasnya saja. Abstraction di dalam pemrograman java dibagi menjadi dua, yaitu:
1. Class Abstract
Class Abstract adalah class yang masih dalam bentuk abstract atau tidak berbentuk. Karena bentuknya yang masih abstract maka class abstract tidak bisa dibuat menjadi object langsung. Syarat untuk suatu class dapat disebut menjadi class abstract setidaknya class tersebut memiliki satu atau lebih method abstract. Method abstract ialah method yang tidak memiliki isi. Misalnya seperti berikut:
Method greeting() bukan bersifat method abstract karena memiliki implementasi didalam body dari method, sedangkan method sayHello() bersifat abstract karena tidak memiliki implementasi di dalam body dari method. Sehingga apabila ada class yang menggunakan method sayHello(), maka class tersebut akan menjadi class abstract. Berikut ciri - ciri dari kelas abstract:
● Class abstract berisi method abstract, yaitu method tanpa tubuh
● Jika sebuah class memiliki setidaknya satu method abstract, maka class tersebut harus dideklarasikan sebagai abstract.
● Jika class dideklarasikan abstract, maka class tersebut tidak bisa dibuat instance-nya.
● Untuk menggunakan class abstract, Anda harus mewariskannya (inheritance) ke kelas lain, class lain yang menyediakan implementasinya.
● Jika suatu class mewarisi class abstract, maka semua method abstract didalam class abstract harus di implementasi diclass yang diwarisi class abstract.
Contoh Implementasi dari Class Abstract
Pada contoh di atas class animal merupakan class abstract , yang di dalamnya terdapat dua method yaitu method animalSound yang bersifat abstract method dan method sleep yang bersifat regular method. Terdapat turunan dari class animal yaitu class sheep yang dimana class sheep ini mendeklarasikan salah satu method abstract dari class animal yaitu method animalSound. Lalu mengimplementasikannya pada MyMainClass.
2. Interface
Interface dalam Java hampir sama seperti class abstract yang bersifat kerangka. Interface memiliki konstanta statis dan method abstract didalamnya. Pada dasarnya interface pada Java abstraction merupakan sekumpulan method yang tidak memiliki definisi pada saat dideklarasikan. Interface hanya mendefinisikan tipe data, nama dari method, dan parameter yang diperlukan tanpa memberikan detail dari implementasinya.
Sesuai dengan penjelasan diatas bahwa interface bersifat kerangka maka setiap penggunaan dari interface harus selalu mengimplementasikan semua method yang telah didefinisikan di dalam interface. Misalnya seperti berikut:
Contoh diatas merupakan implementasi dari interface, di dalam interface Shape terdapat dua parameter yang masih abstract. Disini fungsi dari interface sebagai kerangka karena ketika ada class lain yang ingin mengimplementasikan interface maka di dalam class tersebut harus mendefinisikan maksud dari getArea() dan getPerimeter().
Contoh implementasi dari Interface
Implementasi dari interface shape dapat kalian lihat pada contoh implementasi diatas, yang dimana pada class Rectangle dan class Circle mengimplementasikan interface shape dengan mendefinisikan maksud dari getArea() dan getPerimeter().
Abstract Class |
Interface |
Abstract Class tidak mendukung multiple inheritance. |
Interface mendukung banyak inheritance. |
Abstract Class dapat memiliki variabel final, non-final, statis, dan non-statis. |
Interface hanya memiliki variabel statis dan final. |
Abstract Class dapat menyediakan implementasi Interface. |
Interface tidak dapat menyediakan implementasi Abstract Class |
Inheritance pada Abstract Class menggunakan Extends |
Inheritance pada Interface menggunakan implement |
Abstract Class Java dapat memiliki anggota kelas seperti pribadi, dilindungi, dll. |
Implement Interface Java bersifat publik secara default. |
public abstract class Shape{} |
public interface Drawable{} |