Dalam konsep PBO dikenal konsep yang disebut pewarisan , sebuah kelas dapat diturunkan dalam kelas lain lagi sehingga kelas turunan mewarisi behavior / method ataupun attribut dari kelas diatasnya (super class) . contohnya jika kelas ‘Motor’ kita turunkan menjadi kelas ‘Generator’
public class Motor {
//konstruktor kelas Motor
public Motor(String jenisMotor){
System.out.println(jenisMotor);
}
public void setTeganganKerja(String teganganKerja){
System.out.println("Tegangan kerja : "+teganganKerja);
}
public void setJumlahPhase(int jumlahPhase){
System.out.println("jumlahPhase : "+jumlahPhase);
}
public void setBergerakKekanan(boolean bergerakKekanan){
if(bergerakKekanan==true){
System.out.println("Motor bergerak ke kanan");
}
}
public void setBergerakKekiri(boolean bergerakKekiri){
if(bergerakKekiri==true){
System.out.println("Motor bergerak ke kiri");
}
}
public void setBerhenti(boolean berhenti){
if(berhenti==true){
System.out.println("Motor berhenti");
}
}
}
public class Generator extends Motor{
private String teganganKerja ;
private int jumlahPhase ;
private boolean bergerakKekanan,bergerakKekiri,berhenti ;
public Generator(String teganganKerja,int jumlahPhase){
//super-class nya memiliki konstruktor Motor(String arg)
super("Motor Generator");
this.teganganKerja = teganganKerja ;
this.jumlahPhase = jumlahPhase;
// Mengakses method dari kelas Motor
setBergerakKekanan(true);
setBergerakKekiri(true);
setBerhenti(true);
setTeganganKerja(teganganKerja);
setJumlahPhase(jumlahPhase);
}
// Meng-Override method setBergerakkekiri(arg)dari kelas Motor
@Override
public void setBergerakKekiri(boolean bergerakKekiri){
this.bergerakKekiri = bergerakKekiri;
if(bergerakKekiri==true){
bergerakKekanan=false;
berhenti=false;
}
System.out.println("maaf , Motor tidak dapat bergerak ke kiri");
}
// Meng-Overload method setBerhenti(arg)dari kelas Motor
public void setBerhenti(boolean berhenti,int selangWaktu){
this.berhenti = true;
if(this.berhenti==true){
bergerakKekiri=false;
bergerakKekanan=false;
}
System.out.println("Motor sudah dihentikan dan Berhenti selama "
+selangWaktu+" detik");
}
public static void main(String[] args){
Generator generator = new Generator("AC 220v",3);
// Penerapan overloading method
generator.setBerhenti(true); // kelas Motor (super-class)
generator.setBerhenti(true,30); //Kelas Generator (sub-class)
}
}
Dapat dilihat dalam method super-class (kelas Motor) sendiri memiliki beberapa method yang memiliki prosedur yang telah didefinisi secara global , kita dapat mendefinisi method turunan dari super-class sesuai kebutuhan dari sub-class atau kita dapat menyebutnya meng-overriding method
Atau dalam sub-class nya (class Generator) kita dapat secara langsung mengakses method-method yang ada di dalam super-class nya (Kelas Motor) .
// Mengakses method dari kelas Motor
setBergerakKekanan(true);
setBergerakKekiri(true);
setBerhenti(true);
setTeganganKerja(teganganKerja);
setJumlahPhase(jumlahPhase);
Kelas Generator yang kita buat meng-extends kelas Motor sehingga dalam kelas Generator kita leluasa mengakses dari method yang kita turunkan dari kelas Motor , dapat dilihat pada method setBergerarkKekiri(arg) . Pada super-class nya method ini memiliki prosedur untuk mencetak tulisan :
System.out.println("Motor bergerak ke kiri");
sedangkan pada method setBergerakKekiri(arg) pada sub-class nya memiliki prosedur untuk mencetak tulisan :
System.out.println("maaf , Motor tidak dapat bergerak ke kiri");
Dan ketika kita manjalankan programnya bahwa prosedur yang ada pada method sub-class nya lah yang akan tercetak .
Inilah yang dinamakan “overriding method’ . ketentuan-ketentuan dalam meng-overide method dijelaskan sebagai berikut :
- Nama method sub-class harus sama dengan nama method super-class
- Daftar parameter method sub-class harus sama dengan Daftar parameter method super-class
- Return-type method sub-class harus sama dengan Return-type method super-class
- Method yang terkena override modifier-nya tidak boleh lebih luas dari method super-classnya
Sedangkan yang dimaksud dengan overloading method dalam PBO adalah apabila dalam sebuah kelas , super-class ataupun sub-class terdapat beberapa method yang memiliki nama method yang sama tetapi memiliki nilai parameter yang berbeda-beda .
Potongan kode diatas :
//Kelas Motor
public void setBerhenti(boolean berhenti){
if(berhenti==true){
System.out.println("Motor berhenti");
}
}
//Kelas Generator
// Meng-Overload method setBerhenti(arg)dari kelas Motor
public void setBerhenti(boolean berhenti,int selangWaktu){
this.berhenti = true;
if(this.berhenti==true){
bergerakKekiri=false;
bergerakKekanan=false;
}
System.out.println("Motor sudah dihentikan dan Berhenti selama "
+selangWaktu+" detik");
}
Cara untuk membuat overloading method :
- Harus memiliki beberapa nama method yang sama
- Dalam nama method overloading yang sama harus memiliki parameter yang berbeda
- Setiap method overloading boleh memiliki return type yang sama ataupun berbeda
Berikut contoh penanganannya :
public static void main(String[] args){
Generator generator = new Generator("AC 220v",3);
// Penerapan overloading method
generator.setBerhenti(true); // dari kelas Motor
generator.setBerhenti(true,30); // dari kelas Generator
}
Untuk lebih jelasnya dapat dilihat tulisan saya mengenai Fungsi Pewarisan pada PBO disini .
Semoga tutorial diatas dapat membantu pembaca .
Terima kasih

Mochamad Idris