ABSTRACT
CLASS, INTERFACE, & INNER CLASS
A. ABSTRACT CLASS
Abstact class adalah suatu kelas yang dinyatakan
abstract, umumnya memiliki satu atau lebih abstract method. Abstract method
adalah suatu method yang memiliki implementasi dan menggunakan modifier
abstact. Abstact class biasanya dijadikan parent/super class dari kelas – kelas
yang dapat membuat objek, abstract class tidak dapat di instansiasi.
Defenisi kelas diletakkan dalam masing – masing kelas turunan.
Dalam hal ini setiap kelas turunan harus mendefenisikan metode – metode yang
tergolong sebagai metode abstrak.
Karakteristik Abstract Class :
- Abstract class adalah class yang mempunyai setidaknya satu abstract method.
- Abstract method adalah method yang tidak memiliki body (hanya deklarasi method).
- Implementasi dari isi abstract method tersebut dilakukan pada subclass.
Bila subclass method abstract
tidak mengimplementasikan isi semua method maka subclass tersebut
harus dideklarasikan abstract.
- Abstract class tidak bisa dibuat objectnya.
- Konsekuensinya, suatu abstract class haruslah diturunkan dimana pada subclass tersebut berisi implementasi dari abstract method yang ada di superclass.
B. INTERFACE
Interface adalah suatu kelas yang berisi method – method tanpa
implementasi, namun tanpa modifier abstact, apabila suatu interface memiliki
atribut, maka atributnya akan berlaku sebagai konstanta. Interface menyerupai
kelas, perbedaannya kata kunci interface menggantikan kedudukan kata kunci
class.
Penentu akses public biasanya di gunakan dengan tujuan agar
interface dapat diakses oleh kelas manapun. Jika tak ada penentu akses public,
interface hanya dapat diakses oleh kelas yang berada dalam paket yang sama.
Interface mendefinisikan sebuah cara standar dan umum dalam
menetapkan sifat-sifat dari class-class. Mereka menyediakan class-class, tanpa
memperhatikan lokasinya dalam hirarki class. Untuk mengimplementasikan
sifat-sifat yang umum. Dengan catatan bahwa interface-interface juga menunjukan
polimorfisme, dikarenakan program dapat memanggil method interface dan versi
yang tepat dari method yang akan dieksekusi tergantung dari tipe object yang
melewati pemanggil method interface.
Interface kita gunakan jika kita ingin class yang tidak
berhubungan mengimplementasikan method yang sama. Melalui interface-interface,
kita dapat menangkap kemiripan diantara class yang tidak berhubungan tanpa
membuatnya seolah-olah class yang berhubungan
C. INNER CLASS
Inner class adalah kelas yang disisipkan kedalam kelas yang
lainfungsi kelas sisipan ini adalah mendukung suatu proses yang akan dijalankan
oleh kelas utamanya. Inner class bersifat tersarang oleh kelas – kelas
utamanya.
LANGKAH – LANGKAH
PRAKTIKUM :
A.
PROGRAM MakhlukHidup.java
public abstract class MakhlukHidup {
protected boolean BisaTerbang = false;
protected String Nama;
protected int JlhKaki;
public MakhlukHidup (String Nama1, int JlhKaki1, boolean
BisaTerbang1) {
this.Nama = Nama1;
this.JlhKaki = JlhKaki1;
this.BisaTerbang = BisaTerbang1;
}
abstract void bernafas();
public void status() {
System.out.println("Nama :
" +Nama);
System.out.println("Jumlah Kaki
: " +JlhKaki);
System.out.println("Bisa
Terbang : " +BisaTerbang);
}
}
Hasil:
B.
PROGRAM Manusia.java
public class Manusia extends
MakhlukHidup {
Manusia(String
Nama) {
super(Nama, 2,false);
}
public void bernafas() {
System.out.println(Nama+"
bernafas dengan menghirup O2");
}
public static void main(String[]
args) {
Manusia m = new Manusia("Sayuti");
m.status();
m.bernafas();
}
}
Hasil:
C.
PROGRAM Tumbuhan.java
public class Tumbuhan extends
MakhlukHidup {
Tumbuhan(String Nama) {
super(Nama, 0, false);
}
public void bernafas() {
System.out.println(Nama+"
bernafas dengan menghirup CO2");
}
public static void
main(String [] args) {
Tumbuhan t = new Tumbuhan("Bayam");
t.status();
t.bernafas();
}
}
D.
PROGRAM Pekerjaan.java
interface Pekerjaan {
public void namaPekerjaan();
public void gaji();
}
Ket : program interface
Hasil: E. PROGRAM Sasya.java
public class Sasya extends Manusia implements Pekerjaan {
public Sasya() {
super("Sasya");
}
public void namaPekerjaan() {
System.out.println("Pekerjaan : Sekretaris");
}
public void gaji() {
System.out.println("Gaji : Rp. 3000.000");
}
public static void main(String [] args) {
Sasya s = new Sasya ();
s.status();
s.bernafas();
s.namaPekerjaan();
s.gaji();
}
}
Hasil :
F. PROGRAM JantungManusia.java
class Orang {
private int JlhKaki = 2;
public void dengarBunyiJantung() {
Jantung j = new Jantung();
j.bunyiJantung();
}
public void tahanNafas() {
System.out.println("Jantung berhenti berdetak!");
}
//inner class
class Jantung {
public void bunyiJantung() {
System.out.println("deg...deg...deg...");
}
public void istirahat() {
System.out.println("Silangkan ke "+JlhKaki+" kaki.");
tahanNafas();
}
}
}
class JantungManusia {
public static void main(String [] args) {
Orang o = new Orang ();
Orang.Jantung p = o.new Jantung();
o.dengarBunyiJantung();
p.istirahat();
}
}
Hasil :
Tidak ada komentar:
Posting Komentar