Abstract class dan Interface pada java
Kelas Abstract
Kelas abstract adalah kelas murni yang tidak boleh memiliki objek, dan satu/lebih method-methodnya yang abstract harus diimplementasikan (override) oleh kelas turunannya.
Suatu kelas dapat diinstansiasi menjadi obyek. Misalnya kelas Segiempat dapat diinstansiasi menjadi Keliling dan Luas. Namun tidak semua kelas dapat diinstansiasikan, contohnya kelas MahlukHidup karena kelas ini terlalu umum (abstract). Ok saya akan perjelas mengenai kelas abstract ini. Jika kita ingin menginstansiasikan sebuah obyek, misalnya saja Bergerak dan Melihat. Sedangkan pada kenyataannya tidak semua mahluk hidup melihat dan bergerak, karena tumbuhan juga termaksud maklup hidup. Kelas seperti inilah yang disebut kelas abstract. Untuk menginstansiasikanya, maka kita membutuhkan kelas turunan, agar dapat membuatnya menjadi lebih spesifik. Dan yang pasti kelas turunan tersebut haruslah hingga menjadi sebuah kelas yang lebih nyata.
Jika dianalogikan maka akan seperti berikut ini : Jika kelas MahlukHidup mempunyai method Bernapas, maka tidak dapat ditentukan apakah mahlup hidup tersebut bernapas dengan paru-paru, insang, atau stomata. Jadi kita membutuhkan kelas turunan yang lebih abstract untuk mengintansiasikanya.
Bentuk umum :
public abstract class [Nama Kelas]{
public class void [Nama Method] ();
}
public class konkrit extends [Nama Kelas]{
public void [Nama Method] ();
}
- Analogi Kelas yang Abstract
Suatu kelas dapat diinstansiasi menjadi objek, misal kelas Dosen dapat diinstansiasi menjadi budi, heri, heru, namun tidak mungkin dapat menginstansiasi kelas MahlukHidup, kelas Hewan, dan kelas Manusia, sebab kelas tersebut terlalu umum (abstract), kelas seperti inilah yang disebut kelas abstract. Dibutuhkan kelas turunan yang lebih khusus.
- Analogi Method yang Abstract
Bila kelas MahlukHidup mempunyai method bernafas, maka tidak dapat ditentukan cara suatu mahluk hidup tersebut bernafas (dengan paru-paru, insang, atau stomata), method seperti inilah yang disebut method abstract. Dibutuhkan kelas turunan yang khusus dan method override dari method yang abstract.
Interface
Interface merupakan kelas yang paling abstract, hanya berisi daftar deklarasi method, artinya semua method belum mempunyai implementasi. Sebagai analoginya akan saya gambarkan sebagai berikut. Dalam kehidupan nyata, terdapat manusia yang bekerja sebagai guru, petani, sapam, pedagang dan lain-lain. Misalkan saja Terdapat kelas Pak Dony, maka kelas ini akan diturunkan dari kelas manusia, namun harus mengimplementasikan sebuah kelas lagi (yang haruslah merupakan sebuah interface sebab java hanya mendukung sebuah induk kelas untuk setiap kelas). Jadi kelas PakDony merupakan implemen dari kelas Guru (jika dia merupakan seorang guru).
Syarat sebuah interface :
1. Tidak memiliki atribute (hanya memiliki konstanta)
2. Tidak memiliki obyek (tidak ada instansiasi)
3. Tidak memiliki modifier static
4. Tidak extends dari kelas lain namun boleh extends dari interface lain bahkan boleh extends ke lebih dari
satu interface lain.
5. Tidak implemen dari kelas lain.
- Analogi Interface
Interface dapat dianalogikan sebagai kontrak yang dapat dipakai oleh setiap kelas.
Dalam kehidupan nyata dapat diketahui ada manusia yang bekerja sebagai da’i, dosen, tentara, penyanyi, pengacara, dan sebagainya, tentunya manusia-manusia tersebut selain harus memiliki method standard sebagai seorang manusia, juga harus memiliki method yang sesuai dengan pekerjaannya.
Dengan demikian untuk membuat objek seorang budi bekerja sebagai dosen, harus dibuat kelas yang merupakan turunan kelas manusia yang meng-implementasikan interface dosen.
- Deklarasi Interface
Bentuk umum deklarasi:
[modifier] interface NamaInterface {
// deklarasi konstanta
// deklarasi method
} // catatan : modifier static tidak boleh digunakan dalam interface
- Implementasi Interface
Bentuk umum implementasi :
[modifier] class NamaKelas implements NamaInterface {
// penggunaan konstanta
// implementasi method
}
Leave a Reply