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 :
Misalnya;
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);
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