Bab
1
Padanannya dalam Bahasa C/C++ :
struct Kotak { int pjg; int lbr; int tgi; }
Contoh-01. class { int int int }
Kotak pjg; lbr; tgi;
Kotak
// panjang
lbr
// tinggi
tgi
class oop01 { public static void main (String[] args ) { int Vol; // Volume Kotak k = new Kotak(); k.pjg = 5; k.lbr = 4; k.tgi = 3; Vol = k.pjg * k.lbr * k.tgi; System.out.println(Vol); } } Tercetak :
Ini bukan sebuah area, tapi suatu pernayataan yang menyatakan atau menggambarkan struktur suatu area. Areanya sendiri akan dibentuk kemudian
pjg
// lebar
Ini areanya yang dibentuk dengan instruksi :
k
K = new Kotak();
5 4 3
60 60 Vol
Area ini tanpa nama, tapi setiap elemenya dapat dinyatakan dengan (bernama) :
Area ini namanya k, semacam pointer dalam bahasa C/C++, (walaupun Java tidak menyebutnya pointer ).
k
ini berisi alamat suatu area , yaitu
area yang berstruktur
1
Kotak
k.pjg k.Lbr k.tgi
02.
class { int int int }
Kotak pjg; lbr; tgi;
class oop02 { public static void main (String[] args ) { int V1, V2; Kotak k1 = new Kotak(); Kotak k2 = new Kotak();
k2
k1
k1.pjg = 5; k1.lbr = 4; k1.tgi = 3;
5
6
4
4
k2.pjg = 6; k2.lbr = 4; k2.tgi = 2;
3
2
V1 = k1.pjg * k1.lbr * k1.tgi; V2 = k2.pjg * k2.lbr * k2.tgi; System.out.println(V1); System.out.println(V2);
Tercetak :
} } 03.
class Kotak { int pjg; int lbr; int tgi; } class oop02 { public static void main (String[] args ) { int V1, V2; Kotak k1, k2;
60
48
V1
V2
60 48
k2
k1
5 4
k1 = new Kotak();
3
k2 = k1; k1.pjg = 5; k1.lbr = 4; k1.tgi = 3;
60
60
V1
V2
V1 = k1.pjg * k1.lbr * k1.tgi; V2 = k2.pjg * k2.lbr * k2.tgi; System.out.println(V1); System.out.println(V2); Tercetak :
} }
2
60 60
04.
class { int int int }
Kotak pjg; lbr; tgi;
k2
k1
class oop04 { public static void main (String[] args ) { int V1, V2; Kotak k1, k2;
5 4
k1 = new Kotak(); k2 = k1;
3
k1.pjg = 5; k1.lbr = 4; k1.tgi = 3; V1 = k1.pjg * k1.lbr * k1.tgi; V2 = k2.pjg * k2.lbr * k2.tgi;
60
60
V1
V2
System.out.println(V1); System.out.println(V2);
k1
k1 = new Kotak();
k1 menunjuk suatu area baru
k1.pjg = 10; k1.lbr = 6; k1.tgi = 4; 10
V1 = k1.pjg * k1.lbr * k1.tgi; V2 = k2.pjg * k2.lbr * k2.tgi;
6 4
System.out.println(V1); System.out.println(V2); }
240
} Tercetak :
V1
60 60 240 60
3
05.
class { int int int
Kotak pjg; lbr; tgi;
void CetakVolume() { System.out.println("Volume = " + (pjg * lbr * tgi ) ); }
Dalam class Kotak, ada method yang namanya :
CetakVolume()
} Suatu ‘ function ’ yang berisi sejumlah instruksi
class oop05 { public static void main (String[] args ) { Kotak k1, k2, k3;
k2
k1
k1 = new Kotak(); k2 = new Kotak(); k3 = new Kotak(); k1.pjg = 5; k1.lbr = 4; k1.tgi = 3;
5
6
4
5
3
4
k3 k2.pjg = 6; k2.lbr = 5; k2.tgi = 4; 7
k3.pjg = 7; k3.lbr = 6; k3.tgi = 5;
6 5
k1.CetakVolume(); k2.CetakVolume(); k3.CetakVolume(); }
k1.CetakVolume();
} Tercetak :
Yang dicetak data yang ditunjuk oleh k1
60 120 210
4
06. class { int int int
Kotak pjg; lbr; tgi; Method HitungVolume() disini hanya berfungsi menghitung volume yang disimpan dalam variabel Vol, Hasil hitungan dalam Vol direturn ke main program
int HitungVolume() { int vol = pjg * lbr * tgi; return vol; } }
Vol = variabel yang dibuat disini
class oop06 { public static void main (String[] args ) { Kotak k1, k2, k3;
Nilainya di-return ke program yang memanggilnya
k1 = new Kotak(); k2 = new Kotak(); k3 = new Kotak();
k2
k1
k3
k1.pjg = 5; k1.lbr = 4; k1.tgi = 3; k2.pjg = 6; k2.lbr = 5; k2.tgi = 4;
5
6
7
4
5
6
3
4
5
k3.pjg = 7; k3.lbr = 6; k3.tgi = 5; System.out.println("Volume1 = " + k1.HitungVolume()); System.out.println("Volume2 = " + k2.HitungVolume()); System.out.println("Volume3 = " + k3.HitungVolume()); } } Tercetak :
Volume1 = 60 Volume2 = 120 Volume3 = 210
‘ memanggil ‘ fungsi ( baca : method )
HitungVolume()
5
07.
class { int int int
Kotak pjg; lbr; tgi;
int HitungVolume() { int vol = pjg * lbr * tgi; return vol; } } class oop07 { public static void main (String[] args ) { int V1, V2, V3; Kotak k1, k2, k3; k1 = new Kotak(); k2 = new Kotak(); k3 = new Kotak();
V1
V2
V3
k2
k1
k3
k1.pjg = 5; k1.lbr = 4; k1.tgi = 3; k2.pjg = 6; k2.lbr = 5; k2.tgi = 4; k3.pjg = 7; k3.lbr = 6; k3.tgi = 5;
5
6
7
4
5
6
3
4
5
60
120
210
V1
V2
V3
V1 = k1.HitungVolume(); V2 = k2.HitungVolume(); V3 = k3.HitungVolume(); System.out.println("Volume1 = " + V1 ); System.out.println("Volume2 = " + V2 ); System.out.println("Volume3 = " + V3 ); } } Tercetak :
Volume1 = 60 Volume2 = 120 Volume3 = 210
6
08.
class { int int int
Kotak pjg; lbr; tgi;
Dalam class Kotak, Ada 2 method
void IsiData (int p, int l, int t ) { pjg = p; lbr = l; tgi = t; } int HitungVolume() { return(pjg*lbr*tgi); }
IsiData Untuk mengisi data : p, l, t
HitungVolume() Untuk menghitung volume yang nilainya di-return ke program main
k
} class oop08 { public static void main (String[] args ) { Kotak k; k = new Kotak();
5 4 3
k.IsiData(5,4,3); System.out.println("Volume = " + k.HitungVolume() ); } } Tercetak :
09.
class { int int int
Volume = 60 Kotak pjg; lbr; tgi;
Kotak() { pjg = 5; lbr = 4; tgi = 3; } int HitungVolume() { return(pjg*lbr*tgi); }
k2
k1
} class oop09 { public static void main (String[] args ) { Kotak k1, k2; k1 = new Kotak(); k2 = new Kotak();
5
5
4
4
3
3
System.out.println("Volume1 = " + k1.HitungVolume() ); System.out.println("Volume2 = " + k2.HitungVolume() ); } } Tercetak :
Volume1 = 60 Volume2 = 60
7
10.
class { int int int
Kotak pjg; lbr; tgi;
Kotak( int p, int l, int t) { pjg = p; lbr = l; tgi = t; } int HitungVolume() { return(pjg*lbr*tgi); }
k2
k1
} class oop10 { public static void main (String[] args ) { Kotak k1, k2; k1 = new Kotak(5,4,3); k2 = new Kotak(6,5,4);
5
6
4
5
3
4
System.out.println("Volume1 = " + k1.HitungVolume() ); System.out.println("Volume2 = " + k2.HitungVolume() ); } } Tercetak :
11.
Volume1 = 60 Volume2 = 120
class Kotak { int pjg; int lbr; int tgi; Kotak( int { this.pjg this.lbr this.tgi }
p, int l, int t) = p; = l; = t;
k2
k1
int HitungVolume() { return(pjg*lbr*tgi); } } class oop11 { public static void main (String[] args ) { Kotak k1, k2;
5
6
4
5
3
4
k1 = new Kotak(5,4,3); k2 = new Kotak(6,5,4); System.out.println("Volume1 = " + k1.HitungVolume() ); System.out.println("Volume2 = " + k2.HitungVolume() ); } } Tercetak :
Volume1 = 60 Volume2 = 120
8
12.
class { int int int
Kotak pjg; lbr; tgi;
Kotak( int { this.pjg this.lbr this.tgi }
pjg, int lbr, int tgi) = pjg; = lbr; = tgi;
int HitungVolume() { return(pjg*lbr*tgi); }
k2
k1
} class oop12 { public static void main (String[] args ) { Kotak k1, k2;
5
6
4
5
3
4
k1 = new Kotak(5,4,3); k2 = new Kotak(6,5,4); System.out.println("Volume1 = " + k1.HitungVolume() ); System.out.println("Volume2 = " + k2.HitungVolume() ); } } Tercetak :
13.
class { int int int
Volume1 = 60 Volume2 = 120 Kotak pjg; lbr; tgi;
k
int HitungVolume(int p, int l, int t) { return(p*l*t); } double HitungVolume(double p, double l, double t) { return(p*l*t); } } class oop13 { public static void main (String[] args ) { Kotak k = new Kotak(); int V1 = k.HitungVolume( 5, 4, 3); double V2 = k.HitungVolume( 5.5, 4.5, 3.0); System.out.println("Volume1 = " + V1 ); System.out.println("Volume2 = " + V2 ); } } Tercetak :
Volume1 = 60 Volume2 = 74.25
9
int
double
60
74.25
V1
V2
14.
class Kotak { //int pjg; //int lbr; //int tgi; int HitungVolume(int p, int l, int t) { return(p*l*t); } double HitungVolume(double p, double l, double t) { return(p*l*t); }
k
} class oop14 { public static void main (String[] args ) { Kotak k = new Kotak();
int
double
int V1 = k.HitungVolume( 5, 4, 3); double V2 = k.HitungVolume( 5.5, 4.5, 3.0);
60
74.25
System.out.println("Volume1 = " + V1 ); System.out.println("Volume2 = " + V2 );
V1
V2
int
double
17
17.5
L1
L2
} } Tercetak :
15.
Volume1 = 60 Volume2 = 74.25
class Segitiga { //int Alas; //int Tgi;
int HitungLuas(int Alas, int Tgi) { return(Alas*Tgi/2); } double HitungLuas(double A, double T) { return(A*T/2.0); } }
k class oop15 { public static void main (String[] args ) { Segitiga k = new Segitiga(); int L1 = k.HitungLuas( 7, 5); double L2 = k.HitungLuas( 7.0, 5.0); System.out.println("Luas1 = " + L1 ); System.out.println("Luas2 = " + L2 ); } } Tercetak :
Luas1 = 17 Luas2 = 17.5
1 10
16.
class Segitiga { //int Alas; //int Tgi;
int HitungLuas(int Alas, int Tgi) { return(Alas*Tgi/2); } double HitungLuas(double A, double T) { return(A*T/2.0); } } class oop16 { public static void main (String[] args ) { Segitiga k = new Segitiga(); int L1 = k.HitungLuas( 7, 5); double L2 = k.HitungLuas( 7.0, 5); System.out.println("Luas1 = " + L1 ); System.out.println("Luas2 = " + L2 ); } } Tercetak :
Luas1 = 17 Luas2 = 17.5
17. class { int int int
Kotak pjg; lbr; tgi;
class oop17 { public static void main (String[] args ) { int V1, V2, V3; Kotak k1, k2, k3;
Kotak() { pjg = 0; lbr = 0; tgi = 0; }
k1 = new Kotak(); k2 = new Kotak(3); k3 = new Kotak(5,4,3); V1 = k1.HitungVolume(); V2 = k2.HitungVolume(); V3 = k3.HitungVolume();
Kotak(int sisi) { pjg=lbr=tgi=sisi+2; } Kotak(int p, int l, int t) { pjg = p; lbr = l; tgi = t; }
System.out.println("Volume1 = " + V1 ); System.out.println("Volume2 = " + V2 ); System.out.println("Volume3 = " + V3 ); } } Tercetak :
int HitungVolume() { int vol = pjg * lbr * tgi; return vol; } }
11
Volume1 = 0 Volume2 = 125 Volume3 = 60
18.
class { int int int
Kotak pjg; lbr; tgi;
Kotak(int p, int l, int t) { pjg = p; lbr = l; tgi = t; } int HitungVolume() { int vol = pjg * lbr * tgi; return vol; } boolean sama(Kotak k) { if( (k.pjg == this.pjg) && (k.lbr == this.lbr) && (k.tgi == this.tgi) { return true; } else { return false; } }
)
} class oop18 { public static void main (String[] args ) { Kotak k1, k2, k3, k4; k1 k2 k3 k4
= = = =
new new new new
Kotak(4,3,2); Kotak(6,5,4); Kotak(4,3,2); Kotak(6,5,4);
System.out.println("k1 == k2 : " + k1.sama(k2) ); System.out.println("k1 == k3 : " + k1.sama(k3) ); System.out.println("k2 == k4 : " + k2.sama(k4) ); } } Tercetak :
k1 == k2 : false k1 == k3 : true k1 == k4 : true
12
19.
class { int int int
Kotak pjg; lbr; tgi;
Kotak(int p, int l, int t) { pjg = p; lbr = l; tgi = t; } Kotak(Kotak k) { this.pjg = k.pjg; this.lbr = k.lbr; this.tgi = k.tgi; } int HitungVolume() { int vol = pjg * lbr * tgi; return vol; } boolean sama(Kotak k) { if( (k.pjg == this.pjg) && (k.lbr == this.lbr) && (k.tgi == this.tgi) { return true; } else { return false; } }
)
} class oop19 { public static void main (String[] args ) { Kotak k1, k2; k1 = new Kotak(4,3,2); k2 = new Kotak(k1); System.out.println("k1 == k2 : " + k1.sama(k2) ); System.out.println("Volume1 = " + k1.HitungVolume()); System.out.println("Volume2 = " + k2.HitungVolume()); } } Tercetak :
K1 == k2 : true Volume1 = 24 Volume1 = 24
13
20.
class Kotak { int p,l,t; Kotak( int a, int b, int c ) { p=a; l=b; t = c; } void Cetak(Kotak k) { System.out.println(this.p); System.out.println(k.p); } } public class dua { public static void main(String[] args) { Kotak k1, k2; k1 = new Kotak(4,3,2); k2 = new Kotak(6,7,8); k1.Cetak(k2); } } Tercetak :
21.
Berasal dari k1.p
Berasal dari k2.p
Parameter berupa object
4 6
class Kotak { int p,l,t; Kotak( int a, int b, int c ) { p=a; l=b; t = c; } void Cetak(Kotak k) { System.out.println(this.p); System.out.println(k.p); } } public class dua { public static void main(String[] args) { Kotak k1, k2; k1 = new Kotak(4,3,2); k2 = new Kotak(6,7,8); k2.Cetak(k2); } }
Kalau ini k2, maka :
Tercetak :
6 6
14
Berasal dari k2.p
Berasal dari k2.p
Parameter berupa object
22. Tanpa Pewarisan 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38
class A { private int a;
}
public void setA( int nilai) { a = nilai; } public int getA() { return a; } Tidak pakai :
class B { private int b; public void setB( int nilai) { b = nilai; } public int getB() { return b; } } public class Contoh { public static void main(String[] args) { A obj1 = new A(); B obj2 = new B(); obj1.setA(10); obj2.setB(25); int x = obj1.getA(); int y = obj2.getB(); System.out.println(x); System.out.println(y); } }
23. Dengan Pewarisan 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38
Tercetak : 10 25
class B extends A { private int b; public void setB( int nilai) { b = nilai; } public int getB() { return b; } } public class Contoh { public static void main(String[] args) { B obj = new B(); obj.setA(10); obj.setB(25); int x = obj.getA(); int y = obj.getB(); System.out.println(x); System.out.println(y); } }
.
class B berdiri sendiri, tidak mewarisi class A
Object
extends
}
Lihat baris 12
Lihat baris 27 sampai dengan 32
.
public void setA( int nilai) { a = nilai; } public int getA() { return a; pakai : }
Tercetak : 10 25
Lihat baris 12
.
class A { private int a;
obj1 obj2
Dengan extends A, Berarti class B mewarisi class A
Lihat baris 27 sampai dengan 32
.
untuk class A, dan untuk class B.
15
Object obj cukup menujnuk class B Karena class B mewarisi class A, Maka obj juga menunjuk class A
class A { private int a;
Class A
24.
public void setA( int nilai) { a = nilai; } public int getA() { return a; }
Class B
} class B extends A { private int b; public void setB( int nilai) { b = nilai; } public int getB() { return b; } } class C extends B { private int c;
Class C
public void setC( int nilai) { c = nilai; } public int getC() { return c; }
main()
} public class Contoh { public static void main(String[] args) { C obj = new C(); obj.setA(10); obj.setB(25); obj.setC(37); int x = obj.getA(); int y = obj.getB(); int z = obj.getC(); System.out.println(x); System.out.println(y); System.out.println(z); } } Tercetak : 10 25 37
16
25.
class A { private int a; protected void setA( int nilai) { a = nilai; } protected int getA() { return a; }
Mengam-
menggunakan setA( ), karena : a = NilaiA; akan menyebabkan ERROR, Sebab : a tidak dikenal di class B
Mengirim nilai 12 ke variabel a di class A,
}
bil nilai a
class B extends A { private int b; Proses ke-5
2
Proses ke-2
B( int NilaiA, int NilaiB)
5
{ setA(NilaiA); b = NilaiB; } public void showdata() { int x = getA(); System.out.println(x); System.out.println(b); }
Proses ke-3
Mencetak nilai a
6 Mengisi nilai 35 ke variabel b di class B.
7
} class C { private int c; public void setC( int nilai)
Berusaha mencetak nilai a dan nilai b
{ c = nilai; } public int getC() { return c; } public void showC() { System.out.println(c); } }
3
Mencetak nilai b
Mengirim nilai 12 ke variabel a di class A, dan nilai 35 ke variabel b di class B
public class Contoh Proses ke-4
1
{ public static
4
Proses pertama
void main(String[] args) { B obj = new B(12, 35); obj.showdata(); obj.setA(27); int x = obj.getA(); System.out.println(x);
8
Mengisi nilai a
9
Mengambil nilai a
10
Mencetak nilai a
Menulis instruksi : obj.SetC(30); disini, akan menyebabkan ERROR, karena obj hanya untuk class B atau class supernya. Harus membuat obj sendiri misal : C obj2 = new C( ); obj2. setC(30); System.out.println(obj2.getC( ) )
} } Tercetak: 12
35 27
17
25.
class A { private int a; protected void setA( int nilai) { a = nilai; } protected int getA() { return a; }
Mengam-
}
menggunakan setA( ), karena : a = NilaiA; akan menyebabkan ERROR, Sebab : a tidak dikenal di class B
Mengirim nilai 12 ke variabel a di class A,
bil nilai a
class B extends A { private int b; Proses ke-5
2
Proses ke-2
B( int NilaiA, int NilaiB)
5
{ setA(NilaiA); b = NilaiB; } public void showdata() { int x = getA(); System.out.println(x); System.out.println(b); }
3
Proses ke-3
Mengirim nilai 12 ke variabel b di class B.
} class C { private int c; public void setC( int nilai) { c = nilai; } public int getC() { return c; } public void showC() { System.out.println(c); }
Berusaha mencetak nilai a dan nilai b
Mengirim nilai 12 ke variabel a di class A, dan nilai 35 ke variabel b di class B
}
Proses ke-4
4
public class Contoh { public static void main(String[] args) { B obj = new B(12, 35); obj.showdata(); obj.setA(27); int x = obj.getA(); System.out.println(x); } } Tercetak: 12
35 27
17
1
Proses pertama
int
25. class A a, hanya dikenal dalam class A
{ private int a;
Class A
protected void setA( int nilai) { a = nilai; } protected int getA() { return a; }
a Karena protected, maka : setA(), dan getA() dikenal juga o;ah clss turunan A, dalam contoh ini class B
}
class B extends A { private int b;
class B merupakan turunan dari class A
Class B
B( int NilaiA, int NilaiB) { setA(NilaiA); b = NilaiB; } public void showdata() { int x = getA(); System.out.println(x); System.out.println(b); }
Constructor class B
int
b Menggunakan method getA() Tercetak : Tercetak :
12 35
}
class C
class C { private int c;
bukan merupakan turunan dari class A
Class C
public void setC( int nilai) { c = nilai; } public int getC() { return c; } public void showC() { System.out.println(c); }
Menulis : SetA(27); disini akan menyebabkan ERROR, krena SetA( ) tidak dikenal di dalam class C yang bukan turunan dari class A.
main()
} public class Contoh { public static void main(String[] args) { B obj = new B(12, 35); obj.showdata(); obj.setA(27); int x = obj.getA(); System.out.println(x); } }
Tercetak :
Tercetak: 12
35 27
17
27
Mengerjakan instruksi yang ada dalam showsata(). Dalam showdata() ternyata mencetak : 12 dan 35
26. class Kotak { protected int pjg, lbr, tgi; Kotak() { pjg = lbr= tgi = 0; } Kotak ( int p, int l, int t ) { pjg = p; lbr =l; tgi = t; } public int HitungVol() { int vol = pjg * lbr * tgi; return (vol); } } class Kotak2 extends Kotak { private int bjenis, berat; Kotak2(int p, int l, int t, int b ) { pjg = p; lbr = l; tgi = t; bjenis = b; } public int getBerat() { int isi =berat = pjg * lbr * tgi; berat = isi * bjenis; return berat; }
bila
berat = vol * bjenis
} public class kotak11 { public static void main(String[] args) { Kotak2 k = new Kotak2 ( 4,5,6, 2 ); int x = k.HitungVol(); int y = k.getBerat();
Error, karena vol tidak dikenal disini
vol
ada di method HitungVol() dalam class Kotak
Bandingkan dengan program no. 27
System.out.println(x); System.out.println(y); } } Tercetak : 120
240
18
27.
class Kotak { protected int pjg, lbr, tgi; int vol; Kotak() { pjg = lbr= tgi = 0; } Kotak ( int p, int l, int t ) { pjg = p; lbr =l; tgi = t; } public int HitungVol() { vol = pjg * lbr * tgi; return (vol); } } class Kotak2 extends Kotak { private int bjenis, berat; Kotak2(int p, int l, int t, int b ) { pjg = p; lbr = l; tgi = t; bjenis = b; } public int getBerat() { berat = vol * bjenis; return berat; } } public class kotak12 { public static void main(String[] args) { Kotak2 k = new Kotak2 ( 4,5,6, 2 ); int x = k.HitungVol(); int y = k.getBerat(); System.out.println(x); System.out.println(y); } } Tercetak : 120
240
19
28. class Kotak { protected int pjg, lbr, tgi; int vol; Kotak() { pjg = lbr= tgi = 0; } Kotak ( int p, int l, int t ) { pjg = p; lbr =l; tgi = t; } public int HitungVol() { vol = pjg * lbr * tgi; return (vol); } } class Kotak2 extends Kotak { private int bjenis, berat; Kotak2(int b ) { bjenis = b; } public int getBerat() { System.out.println(bjenis); // tercetak : 3 System.out.println(pjg); // tercetak : 0 System.out.println(lbr); // tercetak : 0 System.out.println(tgi); // tercetak : 0 berat = vol * bjenis; // vol nilainya = 0 return berat; } } public class kotak13 { public static void main(String[] args) { Kotak k = new Kotak ( 4,5,6 ); Kotak2 k2 = new Kotak2(3); int x = k.HitungVol(); int y = k2.getBerat(); System.out.println(x); // tercetak : 120 System.out.println(y); // tercetak : 0 } } Tercetak : 3
0 0 0 120 0
20
//PROGRAM 7-13 // Mendefinisikan kelas induk class Penyanyi { public void bernyanyi() { System.out.println("Karakteristik nadanya " + "belum didefinisikan"); } } // Mendefinisikan kelas-kelas turunan dari kelas Penyanyi class PenyanyiJazz extends Penyanyi { // melakukan override terhadap method bernyanyi() public void bernyanyi() { System.out.println("Bernyanyi dengan irama Jazz"); } } class PenyanyiPop extends Penyanyi { // melakukan override terhadap method bernyanyi() public void bernyanyi() { System.out.println("Bernyanyi dengan irama Pop"); } } class PenyanyiDangdut extends Penyanyi { // melakukan override terhadap method bernyanyi() public void bernyanyi() { System.out.println("Bernyanyi dengan irama Dangdut"); } } class DemoPolimorfisme1 { public static void main(String[] args) { Penyanyi p; PenyanyiJazz musmujiono = new PenyanyiJazz(); PenyanyiPop audi = new PenyanyiPop(); PenyanyiDangdut inul = new PenyanyiDangdut(); p = musmujiono; // p mengacu pada objek PenyanyiJazz // akan memanggil method pada kelas PenyanyiJazz p.bernyanyi(); p = audi; // p mengacu pada objek PenyanyiPop // akan memanggil method pada kelas PenyanyiPop p.bernyanyi(); p = inul; // p mengacu pada objek PenyanyiDangdut // akan memanggil method pada kelas PenyanyiDangdut p.bernyanyi(); } }
21
class Penyanyi { public void bernyanyi() {System.out.println("Karakteristik nadanya " + "belum didefinisikan“ ); } } class PenyanyiJazz extends Penyanyi { public void bernyanyi() { System.out.println("Bernyanyi dg irama Jazz"); } } class PenyanyiPop extends Penyanyi { public void bernyanyi() { System.out.println("Bernyanyi dg irama Pop"); } } class PenyanyiDangdut extends Penyanyi { public void bernyanyi() { System.out.println("Bernyanyi dg irama Dangdut"); } }
/Mendefinisikan kelas induk
Mulai dari sini Mendefinisikan kelas-kelas turunan dari kelas Penyanyi
/melakukan override terhadap method bernyanyi()
/melakukan override terhadap method bernyanyi()
/melakukan override terhadap method bernyanyi()
class DemoPolimorfisme1 { public static void main(String[] args) { Penyanyi p; PenyanyiJazz musmujiono = new PenyanyiJazz(); PenyanyiPop audi = new PenyanyiPop(); PenyanyiDangdut inul = new PenyanyiDangdut(); p = musmujiono; p.bernyanyi();
p mengacu pada objek PenyanyiJazz akan memanggil method pada kelas PenyanyiJazz
p = audi; p.bernyanyi();
p mengacu pada objek PenyanyiPop
p = inul; p.bernyanyi();
p mengacu pada objek PenyanyiDangdut akan memanggil method pada kelas PenyanyiDangdut
akan memanggil method pada kelas PenyanyiPop
} } Tercetak : Bernyanyi dg irama Jazz Bernyanyi dg irama Pop Bernyanyi dg irama Dangdut Telihat : p dideklarasikan sebagai referensi ke tipe Penyanyi. Sampai disini belum terlihat apakah p merupakan penyanyi jazz, atau pop, atau angdut. Tetapi setelah p = masmujiono, maka p mengacu ke PenyanyJazz
21
//PROGRAM 7-14 class Bentuk { public double luas() { System.out.println("Tidak didefinisikan"); return 0; } }
// Mendefinisikan kelas induk
class PersegiPanjang extends Bentuk { private double panjang; private double lebar; PersegiPanjang(int p, int l) { panjang = p; lebar = l; } public double luas() { System.out.println("Dalam objek persegi panjang:"); return (panjang * lebar); } } class BujurSangkar extends Bentuk { private double sisi; BujurSangkar(int s) { sisi = s; } public double luas() { System.out.println("Dalam objek bujursangkar:"); return (sisi * sisi); } } class Segitiga extends Bentuk { private double alas; private double tinggi; Segitiga(int a, int t) { alas = a; tinggi = t; } public double luas() { { System.out.println("Dalam objek segitiga:"); return ((alas * tinggi)/2); } } class Lingkaran extends Bentuk { private double jarijari; private final double PI = 3.1416; Lingkaran(int r) { jarijari = r; } public double luas() { System.out.println("Dalam objek lingkaran:"); return (PI * jarijari * jarijari); } }
22
class DemoPolimorfisme2 { public static void main(String[] args) { Bentuk obj; PersegiPanjang pp = new PersegiPanjang(5, 3); BujurSangkar bs = new BujurSangkar(4); Segitiga st = new Segitiga(4, 3); Lingkaran lk = new Lingkaran(2); // obj mengacu pada objek PersegiPanjang
obj = pp; // akan memanggil method yang terdapat pada PersegiPanjang
System.out.println("Luas : " + obj.luas()); System.out.println(); // obj mengacu pada objek PersegiPanjang
obj = bs; // akan memanggil method yang terdapat pada BujurSangkar
System.out.println("Luas : " + obj.luas()); System.out.println(); // obj mengacu pada objek PersegiPanjang
obj = st; // akan memanggil method yang terdapat pada Segitiga
System.out.println("Luas : " + obj.luas()); System.out.println(); // obj mengacu pada objek PersegiPanjang
obj = lk; // akan memanggil method yang terdapat pada Lingkaran
System.out.println("Luas : " + obj.luas()); System.out.println(); } } Tercetak :
Dalam objek persegi panjang : Luas : 15.0 Dalam objek bujursangkar : Luas : 16.0 Dalam objek segitiga : Luas : 6.0 Dalam objek lingkaran : Luas : 12.5664
22