Haloo,
pada kali ini saya berkesempatan untuk memposting "Perbedaan Abstract
Class dan Interface" serta menyelesaikan Tugas Akhir Algoritman dan
Pemograman Lanjut di postingan ini juga. Sebelumnya, nama saya Nyoman Irvianti
Windaputri dari kelas D3MI3904 Telkom University. Langsung saja pada penjelasan
Abstract Class dan Interface;
· Abstract Class merupakan Class
yang khusus dibuat untuk keperluan inheritance. Tujuan dari pembuatan abstract
class ini ialah untuk membuat definisi umum bagi class-class yang akan menjadi
turunan darinya. Abstract Class tidak bisa diinstansiasi. Abstract method tidak
mempunyai implementasi, sehingga penulisannya dilakukan hanya dengan
mengikutkan semikolon, bukan blok method {} seperti biasanya. Abstract method
ini bisa digunakan oleh Class turunannya dengan melakukan override.
· Sedangkan interface secara
filosofis lebih berfungsi sebagai antarmka yang membentuk komunikasi dengan
code lain. Misalnya membentuk hubungan antara sebuah object dengan object yang
lain atau hubungan antara object sebagai penyedia dengan code pengguna. Karena
itulah interface ini banyak digunakan dalam dunia design pattern. Sebab
kebanyakan dari design pattern ini menekankan hubungan antar object.
Terdapat
keyword – keyword yang ada dalam abstract class dan interface, yaitu;
Abstract method adalah Abstract method adalah method yang
tidak memiliki body (hanya deklarasi method).
Overriding adalah
memiliki method yang namanya sama namun berbeda class. Method pertama adalah method
yang berasal dari class induk dengan parameter yang sama dengan method pada class anak.
Implements adalah sama dengan extends tapi ini digunakan
nya di interface. Mengimplementasikan interface serupa dengan menuruni dari
class kecuali, tetapi perlu mengimplementasikan
semua metode yang didefinisikan di
interface.
Perent class adalah induk dari si class atau yang menjadi
orang tuanya.
Private adalah Kata kunci yang digunakan dalam
pembagian lapangan, metode, atau kelas batin,anggota swasta hanya dapat diakses
oleh anggota lain dari kelas mereka
sendiri.
Public adalah kata kunci yang digunakan dalam
deklarasi metode, kelas, atau bidang, kelas umum, metode dan bidang dapat
diakses oleh anggota dari setiap kelas.
This
adalah yang Digunakan untuk mewakili sebuah instance dari kelas dimana ia
muncul.This dapat digunakan untuk mengakses anggota kelas sebagai referensi.
This juga kata kunci digunakan untuk
meneruskan panggilan dari satu konstuktor dikelas untuk konstuktor lain dikelas yang sama.
Extends adalah yang Digunakan dalm sebuah deklarasi
kelas untuk menetukan superclass,
digunakan dalam deklarasi interface nutuk menentukan satu atau
lebih superinterface.
Protected adalah Kata kunci yangdigunakan dalam
pembagian lapangan, metode,atau kelas
batin,anggota yang dilindungi hanya dapat diakse oleh anggota kelas
mereka sendiri, bahwa kelas itu
subclass atau kelas yang sama.
Perbedaan:
Abstract Class
|
Interface
|
Bisa berisi abstract dan
non-abstract method.
|
Hanya boleh berisi abstract method.
|
Kita harus menuliskan sendiri
modifiernya.
|
Kita tidak perlu susah2 menulis
public abstract di depan nama method. Karena secara implisit, modifier untuk
method di interface adalah public dan abstract.
|
Bisa mendeklarasikan constant dan
instance variable.
|
Hanya bisa mendeklarasikan
constant. Secara implisit variable
yang dideklarasikan di interface bersifat public, static dan final.
|
Method boleh bersifat static.
|
Method tidak boleh bersifat static.
|
Method boleh bersifat final.
|
Method tidak boleh bersifat final.
|
Suatu abstact class hanya bisa
meng-extend satu abstract class lainnya.
|
Suatu interface bisa
meng-extend satu atau lebih interface
lainnya.
|
Suatu abstract class hanya bisa
meng-extend satu abstract class dan meng-implement beberapa interface.
|
Suatu interface hanya bisa meng-extend
interface lainnya. Dan tidak bisa meng-implement class atau interface
lainnya.
|
Nah
itu dia beberapa penjelasan tentang Abstract Class dan Interface dan perbedaannya,
saya lanjut saja ke Pengamatan untuk Tugas Akhir Algoritma dan Pemograman
Lanjut
Pengamatan
1
1. Bolehkah ditambahkan body method “{statement1; statement1}” pada method getValue ataupun method prefeix pada classAbstract abstractClass ? jelaskan!
1. Bolehkah ditambahkan body method “{statement1; statement1}” pada method getValue ataupun method prefeix pada classAbstract abstractClass ? jelaskan!
Jawaban: Tidak boleh, karena pada
abstractClass tidak boleh mempunyai body
method.
2. Kembalikan program seperti semula, jelaskan error apa yang terjadi apabila method getValue() pada class ConcreteClass1 di hapus!
2. Kembalikan program seperti semula, jelaskan error apa yang terjadi apabila method getValue() pada class ConcreteClass1 di hapus!
Jawaban: Error, yang terjadi jika method
getValue dihapus ialah tidak ada method dan tidak ada override.
3. Kembalikan program seperti semula, selanjutnya perhatikan perbedaan hak akses method getValue() di child class ConcreteClass1 dan ConcreteClass2! Jelaskan apa maksudnya!
3. Kembalikan program seperti semula, selanjutnya perhatikan perbedaan hak akses method getValue() di child class ConcreteClass1 dan ConcreteClass2! Jelaskan apa maksudnya!
Jawaban: Pada classConcrete1 terdapat
protetcted yang hanya bisa di akses oleh kelas lain yang berada dalam satu
package, sedangkan classConcrete2 terdapat public yang hanya bisa diakses atau
dipanggil dari luar kelas di mana ia dideklarasikan.
4. Buatlah abstract method yang bernama getValue2 pada class ConcreteClass1! Compile dan mengapa terjadi error?
4. Buatlah abstract method yang bernama getValue2 pada class ConcreteClass1! Compile dan mengapa terjadi error?
Jawaban: Terjadi error,
karena tidak ada method body / tidak adanya deklarasi abstract pada protected
String pada getvalue2.
5. Ikuti soal nomor 4, silahkan ubah class ConcreteClass1 menjadi abstract. Selajutnya jelaskan mengapa terjadi error?
5. Ikuti soal nomor 4, silahkan ubah class ConcreteClass1 menjadi abstract. Selajutnya jelaskan mengapa terjadi error?
Jawaban: Terjadi error, karena ConcreteClass1
pada abstractclass nya tidak bisa di intansiasi.
6. Dengan mengikuti struktur kode program tadi serta ditambahkan satu abstract method bernama “gabung” TANPA PARAMETER pada parent class, bagaimana outputnya?
6. Dengan mengikuti struktur kode program tadi serta ditambahkan satu abstract method bernama “gabung” TANPA PARAMETER pada parent class, bagaimana outputnya?
Output:
Pengamatan 2
1.
Compile kode program dan jelaskan sebab error
yang terjadi!
Jawaban:
ClassMobil2 bukan class abstract dan juga tidak ada Override method getMerk()
diclassMobil2
2.
Tambahkan
method yang diperlukan untuk mengatasi error yang terjadi (No. 1)
Jawaban:
OUTPUT:
3.
Perhatikan soal 1 (abstract) dan soal 2 ini
(interface) dan lakukan poin-poin berikut:
·
Apa
yang terjadi apabila ditambahkan method biasa yang mengandungbody
"{}" pada interface Mobil? Jelaskan!
·
Jelaskan
perbedaan body program antara class abstract dan interface!
·
Jelaskan
perbedaan penggunaan extends antara soal 1 dan soal 2
Jawaban:
1. Programnya error karena pada class interface tidak diperbolehkan memakai method biasa, harus
memakai method abstract.
2. Body Program abstract itu dalam
penurunan sifat nya memakai extends dan di Interface class memakai implements.
3. Pada soal no.1 penggunaan extendsnya menunjukan bahwa abstractClass memiliki child. Tapi pada soal no.2
extendsnya menunjukan bahwa interfacenya yang memiliki child.
---------------------------------------------------------------------------------------
Demikian Penjelasan tentang Perbedaan Abstract Class dan Interface beserta Tugas Akhir ALPRO Lanjut saya, mohon maaf bila terdapat kesalahan. Terimakasih sudah membaca!
0 komentar:
Posting Komentar