Langsung ke konten utama

ABSTRACT CLASS DAN INTERFACE PADA JAVA

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.

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.

   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




 Interface 

Contoh kode interface


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 :

Komentar

Postingan populer dari blog ini

Pendidikan [bukan] selamanya tentang index nilai

Sebenernya waktu mau buat blog ini harusnya saya belajar HTML,PHP, sama Proses Bisnis karena mau asessment tapi karna belum ada niat jadi dan yang ada malah niat buat ngeblog jadi ya syudahlah dengan bermodalkan curhatan didalam sini akan saya tuangkan~ Selamat membaca ambil yang baiknya aja yaaa gengss :) Judul blog kali ini agak bermakna ya bukan curhatan tentang perasaan kok cuma disini gue, cuma mau memberikan sebuah pandangan atau opini gue tentang pendidikan lebih tepatnya mencoba untuk membuka pikiran kalian semua bahwa pendidikan bukan selamanya tentang index nilai.  Dari jaman gue masih SD,SMP,SMA bahkan sampai saat ini kuliah semester 3 kalau hampir semua itu sekolah ngejar index nilai. Seberapa pentingkah index nilai itu? Kenapa sih pada memperebutkan index nilai? Gue juga enggak ngerti kenapa sih diantara kalian banyak banget yang masih mengejar index nilai. Dulu jaman gue SD, saking wahnya sebuah index nilai rentang 80-100 gak sedikit yang orang tuanya memberikan ...

First

Sesuai kata pepatah ' Tak Kenal Maka Tak Sayang' maka dari itu kita kenalan biar menjadi sayang *Eaaaa  Nama lengkap gue selengkap-lengkapnya Nabila Rizkita. Yap nama depan gue emang mainstream. Kenapa? Karena dari jaman gue TK,SD,SMP,SMA pasti dan selalu ada rang yang mempunyai nama 'Nabila'. Gak percaya? Sok inget-inget lagi nama temen-temen kalian atau cek nama tetangga kalian pasti ada nama 'Nabila'nya baik di depan,tengah,belakang. Contoh nih dulu waktu gue SD temen sekelas gue juga ada nama 'Nabila'nya tapi dibelakang. Tetep aja kan mainstream banget tuh nama. Tapi gue bersyukur punya nama mainstream karena nama adalah doa maka alasan nyokap gue namain 'Nabila' bukan karena ikut-ikutan atau apapun tapi karena arti sebuah nama mengandung makna doa. Nah itu nama lengkap gue, gue juga punya nama panggilan kalian bisa panggil gue dengan berbagai macam nama. Kalau dirumah gue biasa dipanggil 'Lala'. Nah nama 'Lala' ini juga k...