Class Inheritance
Inheritance merupakan suatu cara untuk menurunkan suatu class yang lebih umum
menjadi suatu class yang lebih spesifik.
Pada subclass biasanya terdapat fungsi yang lebih atau class yang lebih detail
dibandingkan superclass-nya.
contoh :
pada circle.java
public class Circle {
Circle(double r) { //Constructor
radius = r;
}
Circle() { //Constructor
radius = 1.0;
}
pada Test.java
pada contoh diatas tampak bahwa Cylinder merupakan subclass dari Circle.
super(parameters);
Contoh :
pada Cylinder.java
public class Cylinder extends Circle {
private double length;
super.method(parameters);
Contoh :
pada Cylinder.java findVolume dapat dibuat menjadi :
Penggunaan super untuk method boleh digunakan atau tidak digunakan apabila method
pada superclass tidak dioverride / dibuat ulang pada subclass. bila terjadi method
override keyword super harus digunakan.
contoh :
pada Cylinder.java
public class Cylinder extends Circle {
private double length;
Class Object
Semua class yang dibuat di java merupakan turunan dari class java.lang.object. jika
keyword extends tidak diikuti dengan class superclass maka subclass tersebut merupakan
extends dari class java.lang.object
Method equals()
Method ini digunakan untuk membandingkan apakah dua object sama. dua buah object
sama hanya jika keduanya mempunyai nilai yang sama pada nilai datanya. Syntaks
penggunaan adalah sebagai berikut :
object1.equals(object2);
Method toString()
Method toString() digunakan untuk merepresentasikan nilai object dalam bentuk String.
secara default, toString() mengembalikan suatu String yang berisi nama class dari object,
tanda “@” dan nilai yang merepresentasikan object.
Contoh :
Contoh :
Cylinder length = 5
protected modifier dapat digunakan pada data/ attribute dan method. Protected data
maupun protected method pada suatu public class dapat diakses oleh class lain dengan
syarat :
Contoh :
jika C1 mempunyai protected data bernama x di dalam package P1 maka :
1. jika class C2 pada package P2 merupakan subclass dari C1, maka x dapat diakses C2
karena x dapat diakses oleh semua subclass C1
Bahasa Pemrograman I Class Inheritance
Pertemuan 4 Halaman 6/6
2. jika class C3 pada package P1 mempunyai instance dari C1 bernama c1, maka x
dapat diakses c1 karena C3 dan C1 berada pada package yang sama
3. jika class C4 pada package P2 mempunyai instance dari C1 bernama c1, maka x tidak
dapat diakses karena C4 dan C1 berlainan package.
final Modifier
final modifier dapat digunakan pada class, data dan method. final modifier pada class
digunakan untuk membuat class yang tidak dapat diperluas lagi (tidak dapat dibuat
subclass-nya). sedangkan penggunaan pada method biasanya untuk membuat method
yang tidak dapat dioverride pada subclass-nya.
abstract Modifier
Penggunaan abstract modifier yaitu pada class atau method. Untuk penggunaan pada
class biasanya disebut dengan abstract class yaitu class yang sifatnya tidak dapat
mempunyai instance yang spesifik. sedangkan penggunaan pada method biasanya disebut
dengan abstract method yaitu method yang tidak mempunyai implementasi / kosong.
Implementasi baru dilakukan pada subclass dari class tersebut.
contoh :
pada GeometricObject
public GeometricObject() {
color = “white”;
weight = 1.0;
}
pada contoh diatas GeometricObject merupakan abstract class dan mempunyai dua buah
method abstract yaitu findArea() dan findCircumference(). kedua method ini akan
diimplementasikan pada subclass-nya.
public Circle() {
this(1.0,1.0,”white”);
}
public Circle(double r) {
super(“white”,1.0);
radius = r;
}
Casting Objects
Casting object / konversi object digunakan untuk melakukan konversi dari suatu object
ke object lain dalam satu susunan hirarki yang sama.
pada saat mengkonversi object ke object lain biasakan gunakan operator instanceof
untuk melakukan pemeriksaan apakah object tersebut benar-benar dalam satu susunan
hirarki class yang sama.
contoh :
casting object kadang-kadang diperlukan apabila kita mempunyai array dari object yang
berisi bermacam-macam object dan kita ingin menjalankan method yang berlainan dari
object-object tersebut. Perhatikan contoh berikut :
pada TestCasting.java
for(int i=0;i<2;i++) {
if (geoObject[i] instanceof Cylinder) {
//check apakah object Cylinder ?
System.out.println(“Object is Cylinder”);
System.out.println(“Cylinder volume = “+
((Cylinder)geoObject[i]).findVolume()));
}
//Check apakah object Circle ?
else if (geoObject[i] instanceof Cirlce) {
System.out.println(“Object is Circle”);
System.out.println(“Cylinder area = “+
((Circle)geoObject[i]).findArea()));
}
}
}
}
pada Cylinder.java
public Cylinder() {
super();
length = 1.0;
}
hal ini dapat dilakukan karena Cylinder merupakan subclass dari Circle dan Circle
merupakan subclass dari GeometricObject
interfaces
interfaces digunakan untuk melakukan penurunan dari beberapa class atau multiple
inheritance. jika kita menggunakan keywords extends penurunan hanya dilakukan dari
sebuah parent class. dengan interface kita dapat menurunkan beberapa class menjadi
sebuah subclass.
Contoh :
pada CompareObject.java
pada Sort.java
class Sort {
public static void sort(CompareObject[] o) {
CompareObject currentMax;
int currentMaxIndex;
for(int i=o.length-1;i>=1;i--) {
currentMax = o[i];
currentMaxIndex = i;
for(int j=i-1;j>=0;j--) {
if(currentMax.compare(o[j])==-1) {
currentMax = o[j];
currentMaxIndex =j;
}
}
if(currentMaxIndex!=i) {
o[currentMaxIndex]=o[i];
o[i]=currentMax;
}
}
}
}
pada TestSort.java
for(int i=0;i<c.length;i++)
c[i]= new CompareCircle(100*Math.random(),1.0,”white”);
Sort.sort(c);
System.out.println(“Sorted Circles”);
printObject(c);
for(int i=0;i<cyl.length;i++)
cyl[i]= new CompareCylinder(100*Math.random(),1.0,”white”,
100*Math.random());
Sort.sort(cyl);
System.out.println(“Sorted Cylinders”);
printObject(cyl);
pada CompareCircle.java
pada CompareCylinder.java