LAPORAN V
ABSTRACT, INTERFACE, INNER
CLASS
BAB IV
1. Abstact Class
Abstract class adalah suatu class yang dinyatakan abstract, umumnya
memiliki satu atau abstract method, abstract method adalah suatu method yang
belum memiliki implementasi dan menggunakan modifier abstract. Abstract class
biasanya dijadikan parent atau super class dari kelas – kelas yang dapat
membuat objek, abstract class tidak dapat diinstanisasi.
Analogi Inheritance dan Abstract Class :
Inheritence dapat dianalogikan seperti penggolongan kelas, ordo,
phylum dalam biologi. Makhluk hidup dapat diturunkan atau diextend atau
diperluas (di-inherit) menjadi burung, reptile, ikan dan lain – lain, jenjang
penurunan tersebut disebut inheritance.
Kita mengetahui bahwa suatu kelas dapat diinstanisasi menjadi suatu
objek, misal kelas manusia dapat diinstanisasi menjadi Joko, Susi, Ari, dan
lain – lain, namun kita tidak mungkin dapat menginstanisasi kelas makhluk
hidup, maupun kelas hewan, sebab kelas tersebut terlalu umum (abstract), kelas
seperti inilah yang desebut sebagai abstract class, apabila class makhluk hidup
mempunyai method bernafas, maka kita tidak dapat menentukan
(meng-implementasikan) cara makhluk hidup tersebut bernafas, dengan paru –
paru, insang atau stomata, dengan demikian kita dapat menyatakan bahwa di dalam
kelas makhluk hidup, bernafas merupakan method yang abstract.
- Interface
Interface adalah suatu class yang berisi method – method tanpa
imlementasi, namun tanpa modifier abstract, apabila suatu interface memiliki
atribut, maka atributnya akan berlaku sebagai konstanta (static final).

Interface dapat dianaligikan sebagai kontrak yang dapat dipakai oleh
setiap kelas. Dalam kehidupan nyata kita mengetahui bahwa ada yang bekerja
sebagai penyayi, pengacara, pelawak, dsb, tentunya manusia –manusia tersebut
selain harus memiliki method standar seorang manusia, juga harus memiliki
method yang sesuai dengan pekerjaannya. Dengan demikian untuk membuat seorang
objek Joko penyayi kita harus membuat kelas yang merupakan turunan kelas
manusia yang mengimplementasikan interface penyayi.
- Inner Class
Inner Class adalah kelas yang disisipkan di dalam kelas yang
lain. Fungsi kelas sisipan ini adalah mendukung suatu proses yang akan
dijalankan oleh kelas utamanya. Inner Class bersifat tersarang terhadap kelas –
kelas utamanya, seperti halnya blok penyeleksian (if, for) yang tersarang
pada blok penyeleksian lainnya atau method yang tersarang pada method lainnya.

Inner Class dapat dianalogikan sebagi hubungan antara manusia dan
paru – paru. Setipa manusia pasti bernafas dengan menggunakan paru – paru.
Dalam hal ini berarti kinerja dari paru – paru turut mendukung/menetukan
kinerja dari manusia. Dalam bahasa pemrograman berorientasi objek manusia dapat
dikatakan sebagai outer class dan paru – paru sebagai inner class-nya.
Contoh Dalam Program Java.
Code Programnya:
MakhlukHidup.Java
abstract class MakhlukHidup { //membuat kelas abstrak dengan nama MakhlukHidup
protected boolean BisaTerbang = false; // mendeklarasikan atribut
protected String Nama; //
mendeklarasikan atribut
protected int JlhKaki; //
mendeklarasikan atribut
public MakhlukHidup(String Nama1, int JlhKaki1, boolean BisaTerbang1) { // mendeklarasikan method dengan parameter Nama1, JlhKaji1, BiasTerbang1
this.Nama = Nama1; //
menyatakan bahwa nilai Nama = Nama1
this.JlhKaki = JlhKaki1; //
menyatakan bahwa nilai JlhKaki = JlhKaki1
this.BisaTerbang = BisaTerbang1; // menyatakan bahwa nilai BisaTerbang = BisaTerbang1
}
abstract void bernafas(); //
mendeklarasikan method abstract dengan nama bernafas
public void status() { //
deklarasi method status
System.out.println("Nama : "+Nama); //mencetak
nilai dari atribut Nama
System.out.println("Jumlah kaki : "+JlhKaki);
//mencetak nilai dari atribut JlhKaki
System.out.println("Bisa terbang : "+BisaTerbang); // mencetak nilai dari atribut BisaTerbang
}
}
// Program diatas tidak dapat
dirunkan karena tidak memiliki fungsi utama dan hanya dapat dicomfile
Manusia.Java
public class Manusia extends MakhlukHidup { // membuat
class Manusia turunan dari class MakhlukHidup
Manusia(String Nama){ //Construktor dari class Manusia
super(Nama,2,false); //method super berisi nilai dari Nama,JlhKaki,BisaTerbang.
}
public void bernafas() { //deklarasi
method bernafas
System.out.println( Nama+ " bernafas dengan menghiruo O2"); //mencetak
nilai dari Nama ditambah kata
” bernafas dengan menghiruo O2”
}
public static void main(String[] args) { // fungsi utama
Manusia m = new Manusia("Sayuti"); // membuat objek pada class Manusia dengan nama m
dan mengirimkan nilai ”Sayuti “ pada parameter Nama di method Manusia
m.status(); // memanggil dan mencetak
isi dari method status pada class MakhlukHidup dan dengan parameter yang telah
dikirimkan
m.bernafas(); //mencetak isi
dari method bernafas
}
}
Out Put :
Tumbuhan.Java
public class Tumbuhan extends MakhlukHidup
{ //deklarasikan class Tumbuhan
turunan dari kelas MakhlukHidup
Tumbuhan(String Nama){ //(Contruktor)deklarasi
method Tumbuhan dengan parameter Nama
super(Nama,0,false); // method
super ,mengirimkan nilai dari Nama,JlhKaki,BisaTerbang pada kelas MaklukHidup.
}
public void bernafas() { //
mendeklarasikan method abstract dengan nama bernafas
System.out.println( Nama+ " bernafas dengan menghiruo CO2"); //mencetak nilai dari Nama ditambah kata ” bernafas dengan menghiruo CO2”
}
public static void main(String[] args) { // fungsi utama
Tumbuhan m = new Tumbuhan("Bayam"); // membuat objek pada class Tumbuhan dengan nama
m dan mengirimkan nilai ”Bayam “ pada parameter Nama di method Tumbuhan
m.status(); //mencetak isi dari method status pada class
MakhlukHidup berdasarkan parameter yang telah dikirimkan
m.bernafas();//mencetak isi dari method bernafas
}
}
Out Put :
Pekerjaan.Java
interface Pekerjaan { // mendeklarasikan interface Pekerjaan
public void namaPekerjaan(); // mendeklarasikan method namaPekerjaan
public void gaji();// mendeklarasikan method gaji.
}
// Program diatas adalah Interface jadi tidak dapat dirunkan
.
Sasya.Java
public class Sasya extends Manusia implements Pekerjaan { //mendeklarasikan class Sasya turunan dari class
Manusia dan mengimplementasikan pada interface Pekerjaan.
public Sasya() { //Construktor Sasya
super("Sasya");// method super dengan parameter Sasya
}
public void namaPekerjaan() { // memanggil method namaPekerjaan pada interface
Pekerjaan
System.out.println("Pekerjaan
:Sekretaris"); // menjetak ("Pekerjaan
:Sekretaris")
}
public void gaji() { // memanggil method gaji pada interface Pekerjaan
System.out.println("Gaji
: Rp. 3.000.000"); //
mencetak ("Gaji
: Rp. 3.000.000")
}
public static void main(String[] args) { // Fungsi Utama
Sasya s=new Sasya(); //membuat objek dengan nama s pada class Sasya
s.status () ; //memanggil dan mencetak isi dari method status pada class
MakhlukHidup berdasarkan parameter yang
telah dikirimkan
s.bernafas(); //memanggil dan mencetak isi dari
method bernafas pada class MakhlukHidup
dengan parameter yang telah dikirimkan
s.namaPekerjaan() ; // mencetak isi dari method namaPekerjaan
s.gaji(); // mencetak isi dari method namaPekerjaan
}
}
Out Put :
JantungManusia.Java
class Orang { // membuat class dengan nama Orang pada class JantungManusia
private int jumlKaki =2; // atribut jumlKaki dengan nilai 2
public void dengarBunyiJantung() { // mendeklarasikan method dengarBunyiJantung
Jantung
j=new Jantung(); //membuat objek baru
dengan nama j pada method jantung
j.bunyiJantung(); // objek j dari method bunyijantung
}
public void tahanNafas() {
//mendeklarasikan method tahanNafas
System.out.println("Jantung berhenti
berdetak!"); //mencetak ("Jantung
berhenti berdetak!")
}
//inner class
class Jantung { // membuta kelas baru dengan nama Jantung pada
class JantungManusia
public
void bunyiJantung() { //memanggil
method bunyiJantung
System.out.println("deg...deg...deg.."); // mencetak
("deg...deg...deg..")
}
public
void istirahat() { // method istirahat
System.out.println("Silahkan
ke "+jumlKaki+" kaki."); // mencetak ("Silahkan ke "+jumlKaki+"
kaki.")
tahanNafas(); // memanggil method tahanNafas
}
}
}
class JantungManusia { // merupakan class utama dengan nama
JantungManusia
public
static void main(String[] args){
//Fungsi Utama
Orang
o = new Orang(); // membuta objek
baru dengan nama o pada method Orang
Orang.Jantung
p = o.new Jantung();// membuta objek
baru dengan nama p pada method jantung pada class Orang.
o.dengarBunyiJantung(); // mencetak nilai dari method dengar BunyiJantung
pada class Orang
p.istirahat(); // mencetak nilai dari method istirahat pada
class Jantung
}
}
Out Put :
Tidak ada komentar:
Posting Komentar