KELAS INNER, KELAS
Class yang dideklarasikan di dalam class
class X {
…
[
modifer akses ]class Y {
….
}
…
}
Menghasilkan dua fle *.class, yaitu
Outer.class
dan
Outer$Inner.class
INNER KELAS
Berorientasi Objek 1Outer class
Inner class
Berorientasi Objek 1
Inner class merupakan bagian dari
kelas, maka
diperlakukan seperti
member class
lainnya
Inner dapat
mengakses semua
member
dari outer class, begitu juga
sebaliknya
Inner class digunakan selayaknya
class normal, tapi inner class ini dapat
digunakan
di luar outer classnya
tergantung modifer aksesnya
.
Berorientasi Objek 1
class Buku {
private int nomor;
private String judul; class Bab {
private int noBab;
public String getBab() {
return "nomor buku: "+nomor+", judul buku: "+judul +", nomor Bab: "+noBab;
} }
private Bab bab = new Bab();
public void setBab(int nomor,String judul,int noBab ) { this.nomor = nomor;
this.judul = judul; bab.noBab = noBab; }
public void cetak(){
System.out.println(bab.getBab()); }
}
Berorientasi Objek 1
class DemoBuku {
public static void main(String[] args) { Buku buku = new Buku();
buku.setBab(10,”PBO 1”,6) buku.cetak();
} }
Berorientasi Objek 1
Suatu kelas yang dinyatakan abstract yang
umumnya
memiliki satu atau lebih abstract
method
Abstract method
adalah suatu
method
yang belum memiliki implementasi
dan
menggunakan
modifer abstract
.
Abstract class biasanya dijadikan parent
atau
super class
dari kelas-kelas yang
dapat membuat object. (tidak dapat
membuat object dari abstrak class)
Berorientasi Objek 1
Suatu kelas dapat diinstansiasi menjadi objek,
misal
kelas Dosen dapat diinstansiasi menjadi
wilis, bayu, lina
, namun
tidak mungkin dapat
menginstansiasi kelas MahlukHidup, kelas
Hewan, dan kelas Manusia, sebab kelas
tersebut terlalu umum (abstract
), kelas
seperti inilah yang disebut kelas abstract.
Dibutuhkan kelas turunan yang lebih khusus.
Analogi Kelas yang
Abstract
Dosen wilis
bayu
lina
Berorientasi Objek 1
Bila
kelas MahlukHidup
mempunyai
method bernafas
, maka
tidak dapat
ditentukan cara suatu mahluk hidup
tersebut bernafas
(dengan
paru-paru, insang, atau stomata), method
seperti inilah yang disebut
method
abstract
. Dibutuhkan
kelas turunan
yang khusus dan
method override
dari method yang abstract
Berorientasi Objek 1
abstract class A {
abstract public void method2();
//method konkrit yg memiliki implementasi
public void method1() {
System.out.println(”Method konkrit dari class
A”);
}
}
class B extends A {
public void method2() {
System.out.println(”Method abstrak yang sudah
menjadi konkrit dalam class B”);
}
}
class DemoAbstrak {
public static void main(String[] args) {
B ob = new B();
ob.method1();
ob.method2();
}
}
Berorientasi Objek 1
kelas yang
berisi method-method
tanpa implementasi
, namun
tanpa
modifer abstract
, apabila suatu
interface memiliki atribut, maka
atributnya akan berlaku sebagai
konstanta
(static fnal).
Berorientasi Objek 1
Interface
dapat
dianalogikan
sebagai
kontrak yang dapat dipakai
oleh setiap kelas
.
Dengan demikian untuk membuat
objek seorang budi bekerja sebagai
dosen, harus dibuat kelas yang
merupakan turunan kelas manusia
yang
meng-implementasikan
interface dosen.
Berorientasi Objek 1
Bentuk umum deklarasi:
[modifer] interface NamaInterface {
// deklarasi konstanta
// deklarasi method
}
Catatan : modifer static tidak boleh
digunakan dalam interface
Berorientasi Objek 1
Bentuk umum implementasi :
[modifer] class NamaKelas implements
NamaInterface {
// penggunaan konstanta
// implementasi method
}
Berorientasi Objek 1
Interface vs Class
komponen
interface
class
definisi
daftar deklarasi
method
model objek
kandungan
informasi
isi/implementasi
semua
methodnya
berada di luar
interface ini
mendefinisikan
attribute dan
method secara
rinci dan
konkret
Berorientasi Objek 1
Inheritance adalah proses pewarisan
attribute dan method dari satu kelas
super kepada satu/lebih subkelas.
Syntax kelas yang menggunakan
lebih dari satu interface :
[modifer] class NamaKelas implements
NamaInterface1, NamaInterface2, … {
//interfaceBody
}
Berorientasi Objek 1
Interface vs Abstract Class
komponen
interface
abstract class
attribute
hanya berupa
konstanta
bebas memilki tipe
data apa saja
method
berupa deklarasi
boleh deklarasi,
boleh berupa
method lengkap
syntax
seluruhnya abstract
(berupa deklarasi)
Berorientasi Objek 1
interface
Queue {
public void push(int e);
public int pop();
public void printQ();
}
Berorientasi Objek 1
public class Fifo implements Queue { + " dimasukkan ke queue"); }
Berorientasi Objek 1
public class Lifo implements Queue { int bucket[]; dimasukkan ke queue");
Berorientasi Objek 1
public class TestFifo {
Berorientasi Objek 1
public class TestLifo {
public static void
Berorientasi Objek 1
abstract class Hewan {
protected String nama; protected int jumKaki;
protected boolean bisaTerbang = false;
public Hewan(String nama, int kaki, boolean terbang) {
this.nama = nama; jumKaki = kaki;
bisaTerbang = terbang; }
public abstract void bersuara(); public static void makan() {
System.out.println("nyam, nyam, nyam"); }
public void isHewan() {
System.out.println("nama : "+nama);
System.out.println("jumlah kaki : "+jumKaki); System.out.println("bisa terbang :
"+bisaTerbang); }
}
Contoh lain: Abstract Class
Berorientasi Objek 1
class Perkutut extends Hewan { public Perkutut() {
super("perkutut",2,true); }
public void bersuara() {
System.out.println("\ncuit, cuit, cuit"); }
public static void main(String[] args) { Perkutut p = new Perkutut();
p.isHewan(); p.bersuara(); }
}
Output :
Berorientasi Objek 1
class Sapi extends Hewan { public Sapi() {
super("sapi", 4, false); }
public void bersuara() {
System.out.println("\nemoh…,emoh.."); }
public static void main(String[] args) { Sapi s = new Sapi();
s.isHewan(); s.bersuara(); }
}
Output :
Berorientasi Objek 1
interface Manusia {
public void menyanyi(); public void ketawa(); }
SpongeBob.java
class SpongeBob extends Hewan implements Manusia { public SpongeBob() {
super("sponge bob", 2, false);} public void bersuara() {
System.out.println("\nhallo patrict..");} public void menyanyi() {
Contoh lain: Interface
Berorientasi Objek 1
public static void main(String[] args) { SpongeBob s= new SpongeBob(); s.isHewan();
s.bersuara(); s.menyanyi(); s.ketawa(); s.makan2(); Hewan.makan(); makan();
} }