Java OOP | Abstract Class

Java OOP | Abstract Class

Abstraction?

Sebelum lanjut kedalam topik pembahasan abstract class, kita pahami dulu apa itu Abstraction dalam pemograman berorientasi object.

Abstraction/abstraksi adalah suatu proses menyembunyikan kompleksitas detail tertentu yang tidak perlu deketahui oleh user, maksud dari menyembunyikan detail disini adalah menyembunyikan mekanisme kerja dari object tersebut. dan hanya menyajikan fungsionalitas penting kepada user.

Contoh abstraction dalam dunia nyata: misalnya anda mengirim pesan melalui email, kemudian anda mengetik teks sesuatu. lalu mengirim pesan email tersebut dengan menekan tombol kirim.

pada contoh diatas anda tidak perlu mengetahui kompleksitas mekanisme kerja pada tombol kirim tersebut, hingga pesan tersebut benar-benar bisa melakukan tugasnya.

Demikian pula dalam pemograman berorientasi object menyediakan abstraction yang menyembunyikan kompleksitas detail implementasi dari object. Mirip dengan contoh mengirim pesan email. kita hanya perlu tahu method mana yang disediakan untuk dipanggil dan parameter apa yang perlu diinputkan untuk menjalankan mekanisme kerja sehingga bisa melakukan tugasnya. Tapi kita tidak perlu tahu bagaimana method ini di implementasikan dan melakukan jenis tindakan apa yang harus dikerjakan untuk melakukan tugasnya.

Ada dua cara untuk menerapkan Abstraction di Java:

  1. Abstract Class
  2. Interface

Abstract Class

Abstract Class

Abstract class adalah sama seperti kelas pada umumnya yang berisi informasi seperti. field, method, method constructor. yang membedakannya Abstract class tidak bisa dibuat/instance sebagai object secara langsung. hanya bisa diturunkan.

Sintaks dasar membuat class menjadi abstract:

public abstract class Bank { }

Point Penting Untuk Diingat

  • untuk membuat kelas menjadi abstrak gunakan keyword abstract
  • abstract class tidak bisa diinstance
  • abstract class bisa memiliki attribute dan method constructor serta method static
  • abstract class bisa memiliki method abstrak dan method non-abstrak

Abstract method adalah method yang tidak memiliki body implementasi dan hanya bisa digunakan didalam kelas abstract. Body abstract method diimplementasikan didalam kelas turunan.

Sintaks dasar membuat abstract method:

public abstract float getInterestCost(); public abstract void seyHello(String name);

CATATAN: Jika didalam kelas abstrak memiliki method abstrak, maka semua kelas turunannya wajib mengimplementasikan body abstract method.

Contoh 1: Demonstrasi Abstract Class:

contoh mendemonstrasikan abstract class, mari buat kelas abstrak Bank

public abstract class Bank { public String name; Bank(String name) { this.name = name; } public abstract float getInterestCost(); }

selanjutnya mari buat kelas Bri extend Bank

public class Bri extends Bank { public Bri(String name) { super(name); } /*implementasi method abstrak*/ public float getInterestCost() { return 0.01F; } }

selanjutnya mari buat kelas Mandiri extend Bank

public class Mandiri extends Bank { public Mandiri(String name) { super(name); } /*implementasi method abstrak*/ public float getInterestCost() { return 0.02F; } }

selanjutnya mari buat kelas Main Program

public class BankMainApp { public static void main(String[] args) { Bank bank; bank = new Bri("BANK BRI"); float bankBri = bank.getInterestCost(); System.out.println("Interest Cost "+bank.name+" : "+bankBri); bank = new Mandiri("BANK MANDIRI"); float bankMandiri = bank.getInterestCost(); System.out.println("Interest Cost "+bank.name+" : "+bankMandiri); /*OUTPUT: Interest Cost BANK BRI : 0.01 Interest Cost BANK MANDIRI : 0.02 */ } }


Contoh 2: Demonstrasi Abstract Class:

diagram abstract class

contoh mendemonstrasikan kelas abstrak, mari buat kelas Animal

public abstract class Animal { /* method static */ public static void sleep() { System.out.println("ZZzz"); } public abstract void animalVoice(); }

selanjutnya mari buat kelas Tiger extend Animal

public class Tiger extends Animal { /* implementasi method abstrak */ public void animalVoice() { System.out.println("Arrgg"); } }

selanjutnya mari buat kelas Wolf extend Animal

public class Wolf extends Animal { /* implementasi method abstrak */ public void animalVoice() { System.out.println("Wooo"); } }

selanjutnya buat kelas Main Program

public class AnimalMainApp { public static void main(String[] args) { Animal tiger = new Tiger(); tiger.animalVoice(); Animal wolf = new Wolf(); wolf.animalVoice(); Animal.sleep(); /*OUTPUT: Arrgg Wooo ZZzz */ } }