Untuk memenuhi sebuah tugas akhir praktikum mata kuliah Algoritma dan Pemograman Lanjut kali ini postingan berisi tentang "Abstract Class dan Interface pada Java" Untuk lebih lanjut apa itu abstract class dan interface kuy dibaca~ :D
Abstract Class adalah sebuah class setengah jadi (abstrak) yang memuat atau memiliki method dan atrribut. Abstract Class sebenarnya adalah sebuah class, sehingga memiliki semua sifat dari class biasa (punya konstruktor). Hanya saja sifatnya masih abstrak, karena itu biasanya method kosong atau belum di implementasikan. Namun Abstract Class dapat mengimplementasikan method tersebut. Abstract class akan selalu menjadi superclass atau hirarki tertinggi dari subclass-subclass-nya.
Interface adalah kumpulan method yang hanya memuat deklarasi dan struktur method, tanpa detail implementasinya. Sedangkan detail dari method berada pada class yang mengimplementasikan interface tersebut. Interface digunakan jika ingin mengaplikasikan suatu method yang spesifik, yang tidak diperoleh dari proses inheritance(pewarisan). Tipe data yang boleh pada interface adalah tipe data konstan.
Interface
Contoh kode interface
Abstract Class adalah sebuah class setengah jadi (abstrak) yang memuat atau memiliki method dan atrribut. Abstract Class sebenarnya adalah sebuah class, sehingga memiliki semua sifat dari class biasa (punya konstruktor). Hanya saja sifatnya masih abstrak, karena itu biasanya method kosong atau belum di implementasikan. Namun Abstract Class dapat mengimplementasikan method tersebut. Abstract class akan selalu menjadi superclass atau hirarki tertinggi dari subclass-subclass-nya.
Interface adalah kumpulan method yang hanya memuat deklarasi dan struktur method, tanpa detail implementasinya. Sedangkan detail dari method berada pada class yang mengimplementasikan interface tersebut. Interface digunakan jika ingin mengaplikasikan suatu method yang spesifik, yang tidak diperoleh dari proses inheritance(pewarisan). Tipe data yang boleh pada interface adalah tipe data konstan.
Abstract dan interface memiliki perbedaan yang menonjol diantaranya seperti:
Abstract Class
· Abstract
class dapat memiliki tipe data dengan semua tipe data
· Method
pada abstract class berupa method kongkrit dan method abstract
· Abstract
class boleh bersifat static dan final
· Suatu
abstract class hanya bisa meng-extends suatu abstract class lainnya
· Abstract
class dapat mengimplement beberapa interface inteface hanya memiliki tipe data
konstanta
Interface
o
Hanya boleh berisi abstract method
o
Hanya bisa mendeklarasikan constant
o
Semua method harus berupa method abstract
o
Method tidak boleh bersifat static dan final
o Suatu interface bisa mengextend satu atau lebih
interface lainnya
o
Hanya bisa meng-extend interface lainnya
o
Tidak bisa meng-implement class atau interface lainnya
Tetapi selain memiliki perbedaan abstract dan interface pun memiliki persamaan yaitu sama-sama tidak dapat membentuk objek. Untuk lebih jelasnya dapat dilihat dengan penjelasan dibawah ini~
Abstract Class
contoh kode abstract class
contoh abstract class
hasil running abstract class
Hasil Pengamatan
1. Bolehkah ditambahkan body "{statement1;
statement1;}" pada method getValue ataupun method prefixValue pada class
abstract AbstractClass? Jelaskan!
v Tidak boleh karena apabila body “{statement1;statement1;}”
pada method getValue ataupun method preficValue ditambahkan maka akan terjadi
error saat kita akan meng-compile program.
2. Kembalikan program seperti semula, jelaskan error apa
yang terjadi apabila method getValue() pada class ConcreteClass1 di hapus!
v Jika method getValue() pada class ConcreteClass1
dihapus akan muncul error “ConcretClass1 is not abstract and does not override
abstract method getValue() in Abstract Class ConcreteClass1 extends
AbstractClass”
Seperti gambar yang dibawah sini ketika kita hapus methodnya
akan muncul error seperti ini. Kenapa bisa terjadi? Karena harus dilakukan
override terlebih dahulu pada kelas turunannya.
3 Kembalikan program seperti semula, selanjutnya
perhatikan perbedaan hak akses method getValue() di child class ConcreteClass1
dan ConcreteClass2! Jelaskan apa maksudnya!
v Pada child class ConcreteClass1 terdapat hak akses
protected. Protected merupakan hak akses yang hanya dapat diakses oleh class
itu sendiri dan class turunannya. Sedangkan pada child class ConcreteClass2
terdapat akses “public”. Public merupakan
hak akses yang dapat diakses oleh seluruh class.
4 Buatlah abstract method yang bernama getValue2 pada
class ConcreteClass1! Compile dan mengapa terjadi error?.
v Jika kita membuat method kembali dengan nama getValue2
pada class ConcreteClass1 lalu ketika dicompile terjadi error itu disebabkan
abstract method tidak dapat dideklarasikan pada kelas kongkrit. Abstract method
hanya dapat dideklarasikan pada abstract class atau interface.
hasil compile jika dibuat method getValue2
5 Ikuti soal
nomor 4, silahkan ubah class ConcreteClass1 menjadi abstract. Selajutnya
jelaskan mengapa terjadi error?
v
Jika ConcreteClass di ubah menjadi abstract akan
terjadi error pada main class karena kelas tidak dapat dibuat objeknya.
6 Dengan mengikuti struktur kode program di atas
serta ditambahkan satu abstract method bernama "gabung" TANPA
PARAMETER pada parent class, hasilkan output berikut:
Tatank
Mr.
Tatank
Mr.
Tatank hobi meloncat
Kells
Mrs.
Kells
Mrs.
Kells hobi melet
Hasil running soal no.6
contoh interface
1. Compile kode program diatas dan jelaskan sebab error yang terjadi!
Eror terjadi karena pada class mobil2 tidak terdapat abstract method yang diimplementasikan.
hasil compile
2. Tambahkan method yang diperlukan untuk mengatasi error yang terjadi (No. 1)!
untuk mengatasi error dengan menambahkan method seperti gambar dibawah ini :
penambahan method
3. Perhatikan soal 1 (abstract) dan soal 2 ini (interface) dan lakukan poin-poin berikut:
- Apa yang terjadi apabila ditambahkan method biasa yang mengandung body "{}" pada interface Mobil? Jelaskan!
Jika ditambahkan method body akan terjadi error karena isi dari interface harus abstract dan method kosong.
- Jelaskan perbedaan body program antara class abstract dan interface!
Pada body program abstract class, terdapat keyword abstract untuk membuat abstract method dan sebelum identifier nama class. Sedangkan pada Interface hanya menggunakan keyword interface sebelum identifier nama classnya, selanjutnya menulis method seperti biasa tetapi methodnya berupa method kosong.
- Jelaskan perbedaan penggunaan extends antara soal 1 dan soal 2!
Extends pada soal 1 yang abstract class digunakan untuk meng-override abstract method sedangkan extends pada soal 2 yang interface digunakan untuk menambahkan abstract method.
Sekian Penjelasannya dari saya dan saya pun menjelaskan ini dengan bantuan referensi berikut sumber referensinya :
- https://sangwidy.wordpress.com/web-design/oop-2/5-inner-class-abstrak-class/abstract-class/
- http://maceatho.blogspot.co.id/2013/01/interface-dalam-java.html
- http://rizkiyuwanda.com/2012/11/visibility-hak-akses-pada-java-public-private-dan-tanpa-visibility/
- https://pratamasandya.wordpress.com/2013/04/28/perbedaan-abstract-class-dan-interface/
Komentar
Posting Komentar