Jumat, 01 April 2016

Ini adalah tugas praktikum mata kuliah Alpro Lanjut saya. Tugas kali ini akan membahas tanteng perbedaan antara Abstract Class dan Interface pada java.

 1. Apa itu abstract class dan interface?

-Abstract Class adalah sebuah class yang memiliki semua sifat dari class biasa (punya konstruktor). Hanya saja sifatnya masih abstrak, karena itu biasanya methodnya kosong/belum diimplementasikan yang disebut method abstract maka harus di override oleh class turunannya atau yang menggunakannya agar bisa dibuat objeknya.

-Interface adalah jenis khusus dari blok yang hanya berisi method signature (constanta). Interface mendefinisikan sebuah konstanta dari sebuah kumpulan method tanpa body method.

 2. Apa perbedaan yang paling menonjol antara abstract class dan interface?

-Abstract Class Biasanya berisi method abstract Kita harus menuliskan modifier Bisa mendeklarasikan constant dan instance variable Method bersifat static dan final Hanya bisa meng-extend satu abstract kelas lainnya Bisa meng-implement beberapa inheritance

 -Interface Hanya boleh berisi method abstract Tidak perlu menuliskan public abstract karna secara implisit modifier untuk method di Interface adalah public dan abstract Method bersifat non-static dan non-final Hanya bisa meng-extend satu atau lebih interface lainnya Bisa meng-extend interface lainnya dan tidak bisa meng-implement class atau interface lainnya

  source https://pratamasandya.wordpress.com/2013/04/28/perbedaan-abstract-class-dan-interface/

3. Jelaskan keyword-keyword berikut:

 a. abstract method = method yang tidak memiliki body method sehingga tidak terbentuk objeknya maha harus dioverrid.

 b. extends = memanggil fungsi dari class sebelumnya, sehingga kita tidak perlu membuat fungsi lagi pada class yang akan dibuat.

 c. implements =

 d. override = penulisan kembali method di method kelas anak dengan menggunakan method induk. 

e. public = hak akses yang digunakan untuk mengakses method dan properti dan bisa diakses oleh class lain.

 f. protected = hak akses yang digunakan untuk mengakses method dan properti oleh class tersebut dan class turunannya.

 g. private = hak akses yang digunakan untuk mengakses method dan properti oleh class ersebut saja. 

h. parent class = kelas yang mewarisi i. child class = kelas yang diwarisi j. this = untuk membedakan antara atribut dengan parameter masukan.

 Berikut adalah contoh kode abstract class beserta pengamatan. 

1. Bolehkah ditambahkan body "{statement1; statement1;}" pada method getValue ataupun method prefixValue pada class abstract AbstractClass? Jelaskan!
2. Kembalikan program seperti semula, jelaskan error apa yang terjadi apabila method getValue() pada class ConcreteClass1 di hapus!
3. Kembalikan program seperti semula, selanjutnya perhatikan perbedaan hak akses method getValue() di child class ConcreteClass1 dan ConcreteClass2! Jelaskan apa maksudnya!
4. Buatlah abstract method yang bernama getValue2 pada class ConcreteClass1! Compile dan mengapa terjadi error?
5. Ikuti soal nomor 4, silahkan ubah class ConcreteClass1 menjadi abstract. Selajutnya jelaskan mengapa terjadi error?
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



Berikut adalah contoh kode interface beserta pengamatan.

 1. Compile kode program dan jelaskan sebab error yang terjadi!

2. Tambahkan method yang diperlukan untuk mengatasi error yang terjadi (No. 1)!
3. Perhatikan soal 1 (abstract class) dan soal 2 ini (interface) dan lakukan poin-poin berikut:
 - Apa yang terjadi apabila ditambahkan method biasa yang mengandung body "{}" pada interface Mobil? Jelaskan!
 // akan error karna method pada interface harus bersifat abstract method dan tidak bisa diberi body pada methodnya.

 - Jelaskan perbedaan body program antara class abstract dan interface!
 // pada abstract class terdapat atribut, sedangkan pada interface tidak terdapat atribut.

 - Jelaskan perbedaan penggunaan extends antara soal 1 dan soal 2!
 // pada soal 1 extends digunakan untuk mengoverrid abstract method, pada soal 2 extends digunakan untuk menambah abstract method.

 Sekian pembahasan tugas ini, terimakasih telah membaca semoga bermanfaat.