ABSTRACT CLASS, INTERFACE, INNER CLASS
1.
Abstract Class
Bentuk Umum :
[modifier] abstract class
NamaKelas){
// deklarasi attribute
// defenisi / prototype method }
Metode ABSTRACT yaitu suatu mekanisme yang memungkinkan suatu
metode ditentukan dari dalam kelas tetapi tidak disertai defenisnya dan
kelasnya disebut KELAS ABSTRACT.
ABSTRACT CLASS yaitu suatu
kelas yang dinyatakna abstract, umumnya memiliki suatu atau lebih abstract
method.
ABSTRAC T METHOD adalah
metode yang memiliki implementasi dan menggunakan modifier abstract. Abstract
class biasanya dijadikan parent dari kelas-kelas yang dapat membuat objek,
abstract class tidak dapat diinstansi (tidak bias dibuat objek dari kela)
Defenisi kelas diletakkan
dalam masing-masing kelas turunan dan harus mendefenisikan metode-metode yang
tergolong sebagai metode abstract.
2.
INTERFACE
Bentuk Umum:
[modifier] Interface
NamaInterface {
// deklarasi konstanta
// deklarasi method
}
INTERFACE yaitu kelas yang
berisi method-method tanpa implementasi, namun tanpa modifier abstract, apabila
suatu interface memiliki atribut, maka atributnya akan berlaku sebagai
konstanta. Interface menyerupai kelas, bedanya kata kunci interface
menggantikan kedudukan kata kunci kelas. Bentuk pendeklarasiannya :
Penentu akses public biasa
digunakan dengan tujuan agar interface dapat diakses oleh kelas manapun. Jika
tidak ada penentu akses public, interface hanya dapat diakses oleh kelas-kelas
yang berada dalam paket yang sama.
3. 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.
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.
Latihan :
A. Abstract class
Abstract class memiliki suatu atau
lebih abstract method,biasanya dijadikan kelas induk/super dari kelas-kelas
yang membuat objek, dan tidak dapat diinstansiasi.
Program MakhlukHidup.java
// Program
ini bukan fungsi utama karena tidak memeliki public static void main(String []
args) {
public abstract class MakhlukHidup {
//kelas abstract dari
kelas MaklukHidup
protected boolean BisaTerbang =
false;
// tipe data Boolean
dengan atribut BisaTerbang dan nilai false
protected String Nama;
// tipe data String dengan
atribut Nama
protected int JlhKaki;
// tipe data integer
dengan atribut JlhKaki
public
MakhlukHidup(String Nama1, int JlhKaki1,boolean
BisaTerbang1) {
//constructor
MakhlukHidup
//method MakhlukHidup
dengan tipe data String parameter Nama1,tipe data integer parameter
JlhKaki, tipe data Boolean parameter BisaTerbang1
this.Nama = Nama1;
// untuk mengeset atribut nama dengan nilai Nama1
this.JlhKaki = JlhKaki1;
// untuk mengeset atribut
JlhKaki dengan nilai Jlhkaki1
this.BisaTerbang = BisaTerbang1;
// untuk mengeset atribut BisaTerbang dengan nilai
BisaTerbang1
}
abstract void bernafas();
//memanggil abstract method bernafas
dan tidak ada implementasi
public void status() {
//memanggil abstract method status dan
tidak ada implementasi
System.out.println("Nama : " +Nama);
//memanggil atribut nama
System.out.println("Jumlah kaki : " +JlhKaki);
//memanggil atribut Jumlah kaki
System.out.println("Bisa terbang : " +BisaTerbang);
//memanggil atribut bisa terbang
}
}
Program
Manusia.java
Ini adalah proram fungsi
utama
public class Manusia extends MakhlukHidup {
//kelas Manusia adalah turunan dari kelasMakhlukHidup
Manusia(String Nama) {
// constructor Manusia
// Method Manusia dengan tipe data String dan parameter
Nama
super(Nama,2, false);
//memanggil kelas induk
yaitu kelas MakhlukHidup dengan nama sayuti, jumlah kaki 2 dan bisaterbang
false
}
public void bernafas() {
// memanggil method bernafas
System.out.println(Nama+"
bernafas dengan menghirup 02");
//memanggil atribut nama dengn nilai bernafas
denganmenghiup O2
}
public static void main(String [] args) {
//memnggil fungsi utama
Manusia m = new Manusia
("Sayuti");
//membuat objek baru dari kelas Manusia yaitu m =
memanggil constructor Manusia
m.status();
//memanggil method status dari objek m dari kelas
Manusia
m.bernafas();
//memanggil method status
dari objek m dari kelas Manusia
}
}
Program Tumbuhan.java
public class Tumbuhan extends MakhlukHidup {
//kelas Tumbuhan adalah turunan dari kelasMakhlukHidup
Tumbuhan() {
// constructor Tumbuhan
// Method Tumbuhan
super(Nama,0, false);
//memanggil kelas induk
yaitu kelas MakhlukHidup dengan nama Bayam, jumlah kaki 0 dan bisaterbang
false
}
public void bernafas() {
// memanggil method bernafas
System.out.println(Nama+" bernafas dengan menghirup CO2");
//memanggil atribut nama
dengn nilai bernafas denganmenghiup CO2
}
public static void main(String []
args) {
//memnggil fungsi utama
Tumbuhan t = new Tumbuhan ("Bayam");
//membuat objek baru dari
kelas Tumbuhan yaitu t = memanggil constructor Tumbuhan
t.status();
//memanggil method status
dari objek t dari kelas Tumbuhan
t.bernafas();
//memanggil method bernafas dari objek t dari
kelas Tumbuhan
}
}
Program Pekerjaan. java
interface Pekerjaan {
//interaface dengan nama
pekerjaan
public void namaPekerjaan();
//method pekerjaan dan tanpa implementasi
public void gaji();
//method gaji
dan tanpa implementasi
}
Program Sasya.java
public class Sasya extends Manusia implements Pekerjaan {
//kelas
Sasya turunan kelas Manusia tempat implementasi dari interface Pekerjaan
public Sasya() {
//memanggil method Sasya
//memanggil constuktor Sasya
super("Sasya");
// memanggil constructor
kelas induk dengan nama Sasya
}
public void namaPekerjaan () {
//memanggil method namaPekerjaan dari kelas
inteface Pekerjeraan
System.out.println("Pekerjaan :Sekretaris");
//memanggil atribut
Pekerjaan dengan nilai sekretaris
}
public void gaji() {
// memanggil method gaji dari kelas interface
Pekerjaan
System.out.println("Gaji : Rp. 3.000.00");
//memanggil atribut
gaji dengan nilai Rp.3.000.000
}
public static void main(String[]
args) {
//fungsi utama
Sasya s = new Sasya();
//membuat objek baru dari
kelas Sasta yaitu s = memanggil constructor Sasya
s.status();
//memanggil
method status dari objek s dari kelas Manusia
s.bernafas();
//memanggil
method bernafas dari objek s dari kelas Manusia
s.namaPekerjaan();
//memanggil method
namaPekerjaan dari objek s kelas inteface Pekerjeraan
s.gaji();
// memanggil method gaji
dari objek s kelas interface Pekerjaan
}
}
Program JantungManusia.java
class Orang {
// kelas orang
private int jumlKaki=2;
//tipe data integer atribut jumlKaki dengan nilai= 2
public void dengarBunyiJantung() {
// method dengarBunyiJantung
Jantung j =new Jantung();
//membuat objek baru dengan
nama j =memanggilconstruktor jantung
j.bunyiJantung();
//memanggil method BunyiJantung dari
objek j kelas Orang
}
public void tahanNafas() {
//method tahanNafas
System.out.println("Jantung berhenti berdetak!");
}
//inner class
class Jantung {
//kelas Jantung
public void bunyiJantung() {
//memanggil method bunyiJantung dari kelas Orang
System.out.println("deg...deg...deg...");
}
public void istirahat() {
//method istirahat
System.out.println("Silangkan ke "+jumlKaki+" kaki.");
tahanNafas();
}
}
}
class JantungManusia {
//kelas JantungManusia
public static void main(String[]
args) {
//fungsi utama
Orang o = new Orang();
//membuat objek baru dengan nama
o dari kelas Orang
Orang.Jantung p = o.new Jantung();
//membuat objek baru dengan
nama p dari kelas Orang dan kelas Jantung
o.dengarBunyiJantung();
//memanggil method
dengarBunyiJantung dari objek o dari kelas Orang dan kelas Jantung
p.istirahat();
//memanggil method istirahat dari p
dari kelas Jantung
}
}
Tidak ada komentar:
Posting Komentar