baca juga : Inheritance dalam Bahasa JavaMelalui proses abstraksi, programmer menyembunyikan semua kompleksitas data terhadap suatu objek. Untuk melakukan abstraksi programmer biasanya menggunakan abstract class atau interface untuk memberikan penamaan methodnya yang sesuai dengan tugasnya, misal suatu interface mempunyai method getUsia() sehingga mudah dibaca bahwa method tersebut adalah getUsia() lalu class yang mengextends interface/abstract class tersebut mengimplementasikannya sesuai nama method tersebut.
Abstraksi sangat berkaitan dengan enkapsulasi.
Enkapsulasi akan dibahas pada artikel berikutnya..
Contoh
Sebagai contoh, pertama buatlah 3 buah class dan 1 buah interface.![]() |
Class : MainClass, Anak, Pemuda. Interface : Manusia |
Source Code File Manusia :
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
public interface Manusia { | |
public String getName(); | |
public int getAge(); | |
public void tampilkanBiodata(); | |
} |
Interface juga tidak dapat dibuat menjadi objek.
Seperti yang sudah dibahas pada inheritance, untuk membuat class Anak dan Pemuda mempunyai implementasi dari interface Manusia, maka kita membuat class Anak dan Pemuda inherit terhadap interface Manusia.
Akan tetapi, hal yang perlu diingat, dalam bahasa Java jika inherit kepada class, keywordnya extends tetapi untuk interface menggunakan implements.
![]() |
Pesan Error pada class di Eclipse |
Saat melakukan inherit tentu saja akan ada pesan error, sebab kita belum mengimplementasikan method pada interface Manusia. Dengan menggunakan eclipse kita dapat klik pada Add unimplemented methods sehingga akan muncul method yang perlu di impementasikan.
Bagaimana menampilkan menu tersebut ?
arahkan saja kursor ke nama class :D
Maka akan menjadi seperti ini
![]() |
Auto-generated method dari eclipse |
Sehingga, setelah melakukan implementasi pada masing masing class menjadi.
Source Code File Anak :
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
public class Anak implements Manusia { | |
private String namaAnak; | |
private int umurAnak; | |
public Anak(String name, int age) { | |
this.namaAnak = name; | |
this.umurAnak = age; | |
} | |
@Override | |
public String getName() { | |
return namaAnak; | |
} | |
@Override | |
public int getAge() { | |
return umurAnak; | |
} | |
@Override | |
public void tampilkanBiodata() { | |
System.out.println("Nama anak : " + namaAnak + "\nUmur anak : " + umurAnak + " tahun"); | |
} | |
} |
Source Code File Pemuda :
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
public class Pemuda implements Manusia { | |
private String namaPemuda; | |
private int umurPemuda; | |
public Pemuda(String name, int age) { | |
this.namaPemuda = name; | |
this.umurPemuda = age; | |
} | |
@Override | |
public String getName() { | |
return namaPemuda; | |
} | |
@Override | |
public int getAge() { | |
return umurPemuda; | |
} | |
@Override | |
public void tampilkanBiodata() { | |
System.out.println("Nama pemuda : " + namaPemuda + "\nUmur pemuda : " + umurPemuda + " tahun"); | |
} | |
} |
Source Code File MainClass :
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
public class MainClass { | |
public static void main(String[] args) { | |
Manusia anak1 = new Anak("Bocah", 2); | |
Manusia alay1 = new Pemuda("ABG", 16); | |
anak1.tampilkanBiodata(); | |
alay1.tampilkanBiodata(); | |
} | |
} |
Output:
![]() |
seperti yang dibayangkan. |
Pembahasan
Pemrograman harus menggambarkan keadaan nyata, seperti class Anak dan Pemuda tersebut tidak terdapat setName(), melainkan untuk mengatur nama hanya bisa dilakukan lewat constructor. Karna nama manusia memang tidak bisa berubah (bisa sih kalo di urus haha).Serta sebaiknya untuk usia, lebih baik memasukkan tanggal lahir, sebab dari tanggal lahir kita dapat mengetahui usia seseorang sekarang.
No comments
Post a Comment