Rabu, 04 Mei 2016

Abstract Class dan Abstract Method



Pada Abstract Class kita buat contoh seperti membuat superclass bernama LivingThing.
class ini mempunyai method tertentu seperti  eat, sleep, dan walk. Akan tetapi, ada beberapa method di dalam superclass yang sifatnya tidak dapat digeneralisasi. Kita ambil contoh, method walk. Tidak semua kehidupan berjalan (walk) dalam cara yang sama. Ambil manusia sebagai misal, kita manusia berjalan dengan dua kaki, dimana kehidupan lainnya seperti sapi berjalan dengan empat kaki. Akan tetapi, beberapa ciri umum dalam kehidupan sudah biasa, itulah kenapa kita inginkan membuat superclass umum dalam hal ini.

Kita dapat membuat superclass yang mempunyai beberapa method dengan implementasi sedangkan yang lain tidak. Class jenis ini yang disebut dengan class abstract.
Sebuah class abstract adalah class yang tidak dapat di-instantiate. Seringkali muncul di atas hirarki class pemrograman berbasis object, dan mendefinisikan keseluruhan aksi yang mungkin pada object dari seluruh subclasses dalam class. Bentuk umumnya sebagai berikut :


  abstract class namaKelas{
//badan kelas  }

 
Ada beberapa aturan dalam penulisan class abstract :



·         Jika sebuah kelas memiliki method abstrak maka kelas itu harus menjadi kelas abstrak.

·         Sebuah kelas abstrak dapat saja memiliki method yang tidak abstrak.

·         Jika sebuah kelas abstrak diturunkan menjadi kelas konkret, maka semua method abstrak dari kelas abstrak haruslah ditulis ulang / dibuat ulang di kelas konkretnya dan diberi detail dari methodnya.

·         Jika method abstrak di turunkan dan kelas turunannya adalah kelas abstrak, maka tidak perlu menulis ulang method yang abstrak.
 


Method dalam class abstract yang tidak mempunyai implementasi dinamakan method abstract. Untuk membuat method abstract, tinggal menulis deklarasi method tanpa tubuh class dan digunakan menggunakan kata kunci abstract. Bentuk umumnya sebagai berikut:
abstract tipe namaMethod(daftar-parameter);  


Misalnya;



public abstract void someMethod();

Sekarang mari membuat contoh class abstract.

public abstract class LivingThing {

public void breath(){

System.out.println("Living Thing breathing..."); }

public void eat(){

System.out.println("Living Thing eating..."); }

/**

* abstract method walk

* Kita ingin method ini di-overridden oleh subclasses */

public abstract void walk(); }


Ketika class meng-extend class abstract LivingThing, dibutuhkan untuk override method abstract walk(), atau lainnya, juga subclass akan menjadi class abstract, oleh karena itu tidak dapat di-instantiate. Contohnya, 


public class Human extends LivingThing
{
public void walk(){
System.out.println("Human walks...");
} } 
Jika class Human tidak dapat overridde method walk, kita akan menemui pesan error berikut ini, 

Human.java:1: Human is not abstract and does not override abstract method walk() in LivingThing
public class Human extends LivingThing
^
1 error

Petunjuk penulisan program:
Gunakan class abstract untuk mendefinisikan secara luas sifat-sifat dari class tertinggi pada hirarki pemrograman berbasis object, dan gunakan subclassesnya untuk menyediakan rincian dari class abstract.




0 komentar:

Posting Komentar