Jumat, 28 Mei 2010

Inheritance, Polimorphisme, dan contoh dalam Java beserta penjelasan overriding & overloading

INHERITANCE( PEWARISAN)
Class dapat didefinisikan dengan referensi pada class yang lain yang telah terdefinisi. Inheritance merupakan pewarisan atribut dan method pada sebuah class yang diperoleh dari class yang telah terdefinisi tersebut. Setiap subclass akan mewarisi state ( variabel-variabel ) dan behaviour ( methodmethod ) dari superclass-nya. Subclass kemudian dapat menambahkan state dan behaviour baru yang spesifik dan dapat pula memodifikasi ( override ) state dan behaviour yang diturunkan oleh superclass-nya. Sebagai contoh, sebuah kelas RumahMewah akan mewarisi state dan behaviour dari kelas Rumah. Begitu juga dengan kelas RumahSederhana Kelas RumahMewah dan RumahSederhana disebut subkelas, atau kelas anak, dari kelas Rumah, yang disebut superkelas, atau kelas induk.
Dalam Java, terdapat kelas Object yang merupakan superkelas dari semua kelas dalam Java, baik yang builtin ataupun yang kita buat sendiri, lansung maupun tidak langsung. Karena itu sebuah variabel bertipe Object akan dapat menyimpan referensi ke objek apapun dalam bahasa Java. Kelas Object ini memiliki behaviour yang dibutuhkan semua objek untuk dapat dijalankan di Java Virtual Machine. Sebagai contoh, semua kelas mewarisi metode toString dari kelas Object, yang mengembalikan representasi String dari objek tersebut.
Keuntungan dari inheritance adalah :
• Subclass menyediakan state/behaviour yang spesifik yang membedakannya dengan superclass, hal ini akan memungkinkan programmer Java untuk menggunakan ulang source code dari superclass yang telah ada.
• Programmer Java dapat mendefinisikan superclass khusus yang bersifat generik, yang disebut abstract class, untuk mendefinisikan class dengan behaviour dan state secara umum.

Istilah dalam inheritance yang perlu diperhatikan :
Extends
Keyword ini harus kita tambahkan pada definisi class yang menjadi subclass.
Superclass
Superclass digunakan untuk menunjukkan hirarki class yang berarti class dasar dari subclass/class anak.
Subclass
Subclass adalah class anak atau turunan secara hirarki dari superclass.
Super
Keyword ini digunakan untuk memanggil konstruktor dari superclass atau menjadi variabel yang mengacu pada superclass.
• Methode Overriding
Pendefinisian ulang method yang sama pada subclass.
Dalam inheritance, method overriding berbeda dengan method overloading. Kalau method overriding adalah mendefinisikan kembali method yang sama, baik nama method maupun signature atau parameter yang diperlukan dalam subclass, kalau method overloading adalah mendefinisikan method yang memiliki nama yang sama, tetapi dengan signature yang berbeda dalam definisi class yang sama.
Contoh :
class A {
int x;
int y;
void TampilkanNilaixy() {
System.out.println("Nilai x : " + x + ", y : " + y);
}
}
class B extends A {
int z;
void TampilkanJumlah() {
//subclass dapat mengakses member dari superclass
System.out.println("Jumlah : " + (x+y+z));
}
}
class Inheritance {
public static void main(String[] args) {
A VarsuperOb = new A();
B VarsubOb = new B();
System.out.println("SuperClass");
VarsuperOb.x = 10;
VarsuperOb.y = 20;
VarsuperOb.TampilkanNilaixy();
System.out.println("SubClass");

//member superclass dapat diakses dari subclass nya
VarsubOb.x = 5;
VarsubOb.y = 4;
VarsubOb.TampilkanNilaixy();
System.out.println("SubClass Jumlah");
//member tambahan yang hanya ada dalam subclass
VarsubOb.z = 30;
VarsubOb.TampilkanJumlah();
System.out.println("SubClass");
VarsubOb.x = 15;
VarsubOb.y = 14;
VarsubOb.TampilkanNilaixy();
System.out.println("SuperClass");
VarsuperOb.x = 10;
VarsuperOb.y = 20;
//super.x = 100; error
//super.y = 200; error
VarsuperOb.TampilkanNilaixy();
System.out.println("SubClass Jumlah");
VarsubOb.z = 60;
VarsubOb.TampilkanJumlah();
}
}
POLIMORPHISME(Banyak bentuk)
Kata polimorfisme yang berarti satu objek dengan banyak bentuk yang berbeda, adalah konsep sederhana dalam bahasa pemrograman berorientasi objek yang berarti kemampuan dari suatu variabel referensi objek untuk memiliki aksi berbeda bila method yang sama dipanggil, dimana aksi method tergantung dari tipe objeknya.
Kondisi yang harus dipenuhi supaya polimorfisme dapat diimplementasikan adalah :
• Method yang dipanggil harus melalui variabel dari basis class atau superclass.
• Method yang dipanggil harus juga menjadi method dari basis class.
• Signature method harus sama baik pada superclass maupun subclass.
• Method access attribute pada subclass tidak boleh lebih terbatas dari basis class
Contoh :
abstract class Bentuk {
protected int panjang;
protected int lebar;
public String getBentuk() {
return "Bentuk Dasar";
}
public abstract int hitungLuas();
}
class BujurSangkar extends Bentuk {

public BujurSangkar(int panjang1, int lebar1) {
this.panjang = panjang1;
this.lebar = lebar1;
}
public String getBentuk() {
return "Bentuk Bujur Sangkar";
}
public int hitungLuas() {
return panjang*lebar;
}
}
class SegiTiga extends Bentuk {
public SegiTiga(int panjang2, int lebar2) {
this.panjang = panjang2;
this.lebar = lebar2;
}
//public String getBentuk() {
//return "Bentuk Segi Tiga";
//return "";
//}
public int hitungLuas() {
return this.panjang*this.lebar/2;
}
}
class Polimorfisme {
public static void cetakLuasBentuk(Bentuk btk) {
System.out.println(btk.getBentuk() + " dengan luas " +
btk.hitungLuas());
}
public static void main(String[] args) {
BujurSangkar bs = new BujurSangkar(10,20);

BujurSangkar bs1 = new BujurSangkar(10,20);
SegiTiga st = new SegiTiga(5,10);
SegiTiga st1 = new SegiTiga(50,100);
cetakLuasBentuk(bs);
cetakLuasBentuk(bs1);
cetakLuasBentuk(st);
cetakLuasBentuk(st1);
}
}
OVERRIDING
Kemampuan subclass untuk memodifikasi method yang dimiliki oleh class super. Overidding tidak bisa dilakukan dalam kelas itu sendiri Jadi Overidding kerat kaitannya dengan inheritance (pewarisan)
Contoh :
Sepada.java
class Sepeda {
int kecepatan = 0;
int gir = 0;
//method
void ubahGir(int pertambahanGir){
gir=gir+pertambahanGir;
System.out.println("Gir :"+gir);
}
void tambahKecepatan(int pertambahanKecepatan){
kecepatan=kecepatan+pertambahanKecepatan;
System.out.println("Kecepatan :"+kecepatan);
}
}
SepedaGunung.java
class SepedaGunung extends sepeda{
int setSadel;
void ubahGir(int pertambahanGir)
{
gir=2*pertambahanGir);
System.out.println("Gir :"+gir);
}
}
SepedaGunungBeraksi.java
Class SepedaGunungBeraksi{
public static void main(String[]args) {
//Membuat object
SepedaGunung sepedaku=mew sepedaGunung();
//memanggil method di object
sepedaku.tambahKecepatan(10);
sepedaku.ubahGir(2);
sepedaku.setSadel(20);
}
}
OVERLOADING
Method yang mempunyai nama yang sama namun mempunyai parameter yang berbeda. Dalam oveloading harus sebuah method harus mempunyai parameter berbeda (baik tipe maupun jumlahnya). Tipe data nilai kembalian dapat berbeda atau sama.Merupakan pendukung sifat Polymorphisme. Dan semua method dapat di-overloading termasuk constructor
Dalam sebuah kelas diperbolehkan ada lebih dari satu method dengan nama yang sama dengan catatan methods dapat dibedakan berdasarkan banyaknya parameter atau tipe data parameter formal
Contoh :
class Mobil {
String warna;
Mobil(String wrn) { //constructor
warna = wrn;
}
Mobil() {} // constructor
void jalan_maju() {
System.out.print("Mobil warna " + warna);
System.out.println(" Maju !");
}
public static void main(String[] args) {
Mobil mini = new Mobil();
mini.jalan_maju();
Mobil sedan = new Mobil("merah");
sedan.jalan_maju();
}





1 komentar:

 

Watch And Learn © 2008 . Design By: SkinCorner