Abstract Class

Class Abstrak tidak berbeda dengan class class lainnya yaitu memiliki class members (method dan variabel). Sebuah class adalah abstrak jika salah satu methodnya dideklarasikan abstrak. Method abstrak adalah method yang tidak memiliki implementasi. Contoh deklarasi method abstrak:

    abstract public void cetak();

Beberapa hal yang perlu diperhatikan adalah sebagai berikut:
1. Class abstrak tidak dapat dibuatkan instan atau objeknya menggunakan keyword new.
2. Sebuah class dapat dideklarasikan sebagai class abstrak walaupun tidak memiliki method abstrak.
3. Variabel dengan tipe class abstrak tetap bisa diciptakan, tetapi harus refer ke subclass dari class abtrak tersebut yang tentunya tidak abstrak.

Objek class abtrak tidak dapat diciptakan menggunakan keyword new secara langsung. Apabila kita terpaksa ingin menciptakan object class abtrak tanpa membuat subclass kongkritnya, maka kita harus mengimplementasikan method – method abstraknya secara langsung saat deklarasi.

 

Interface

Interface adalah class yang hanya mengandung deklarasi method tanpa memiliki implementasi dan semua property yang dimilikinya bersifat final. Interface mirip dengan class abstrak, tetapi interface tidak terikat dengan class hierarki.

Berikut ini adalah aturan yang harus kita ingat tentang pendeklarasian interface:

  • *Modifier yang digunakan hanya public atau tidak sama sekali. Jika tidak menggunakan modifier maka interface tersebut hanya dapat diakses dalam package yang sama.
  • *Semua variabel yang dideklarasikan dalam interface secara otomatis adalah static final. Karena itu waktu pendeklarasian harus diberikan nilai.
  • *Semua method adalah abstrak. Bedanya dengan class abstrak adalah kita tidak perlu menuliskan keyword abstract pada saat mendeklarasikan method dalam interface.
  • *Kita dapat mengimplementasikan lebih dari satu interface (multiple inheritance) dengan memisahkan nama dari setiap interface dengan tanda koma.
  • *Dapat terjadi saat kita mengimplementasikan lebih dari satu interface ternyata interface interface tersebut memiliki method yang sama. Dalam hal ini method yang akan diimplementasi adalah method yang berada pada posisi pertama.
  • *Semua method yang diimplemetasikan harus public.

*Jika kita tidak mengimplementasikan semua method yang ada pada interface, maka class tersebut harus dideklarasikan sebagai abstract class.

Interface dapat kita gunakan agar class yang mengimplementasikan interface tersebut membuat method yang telah dideklarasikan secara abstract di dalam interface menjadi method yang tidak abstract (direalisasikan).