Salah satu bagian penting dalam object oriented programming adalah inheritance / pewarisan. Inheritance adalah proses pewarisan data dan method dari suatu class kepada class yang lain. Secara default inheritance bersifat menyeluruh sehingga semua data dan method diturunkan kepada class yang baru. Kelas yang mewariskan disebut dengan super class sedangkan class turunan disebut dengan sub class.
Keuntungan dari inheritance
• Bersifat reusable. Bayangkan bila anda perlu membuat beberapa class yang mempunyai sifat dasar dan basis class yang sama, dan pada masing masing class tersebut ditambahkan data dan method yang unique. Tanpa inheritance anda harus menyalin semua data dan method dari suatu class. Hal tersebut mungkin masih bisa dilakukan jika basis class anda definisikan sendiri. Namun bagaiman jika anda ingin menggunakan method dari class standard API. Saya rasa itu tidak mungkin.
• Kemudahan dalam me-manage kelas yang memiliki data dan method yang sama. Jika anda ingin melakukan modifikasi suatu data atau method pada semua sub class anda tidak perlu melakukan perubahan pada masing masing sub class. Modifikasi cukup dilakukan pada super class.
Dalam inheritance dikenal dengan istilah overriding. Overidding adalah kemampuan sub class untuk melakukan modifikasi data dan method dari super class. Sebelum anda melakukan overidding terhadap method atau data dari class induk, anda harus memperhatikan aksesibelitas dari data dan method dari super class.[ overidding hanya bisa dilakukan untuk data dan method yang memiliki modifier default, public dan protected.]
Note.
- Untuk melakukan inheritance digunakan keyword extends
- Dalam java hanya mendukung single inheritance
- Data dengan modifier private tidak diwariskan ke sub class
- Constructor super class tidak diwariskan ke sub class
import java.util.Scanner;
class ling{
Scanner in = new Scanner(System.in);
int r = in.nextInt();
}
class ling1 extends ling{
double jari1;
}
class luas1 extends ling1{
public void Luas(){
jari1 = super.r;
double luas = 3.14*jari1*jari1;
System.out.format("Luas Lingkaran 1 = %.2f", luas);
}
}
class keliling1 extends ling1{
public void Keliling(){
jari1 = super.r;
double keliling = 3.14*2*jari1;
System.out.format("Keliling Lingkaran 1 = %.2f", keliling);
}
}
class ling2 extends ling{
double jari2;
}
class luas2 extends ling2{
public void Luas(){
jari2 = super.r;
double luas = 3.14*jari2*jari2;
System.out.format("Luas Lingkaran 2 = %.2f", luas);
}
}
class keliling2 extends ling2{
public void Keliling(){
jari2 = super.r;
double keliling = 3.14*2*jari2;
System.out.format("Keliling Lingkaran 2 = %.2f", keliling);
}
}
public class lingkar{
public static void main ( String[]args ) {
System.out.println("Masukkan jari-jari lingkaran");
luas1 a=new luas1();
keliling1 b=new keliling1();
luas2 c=new luas2();
keliling2 d=new keliling2();
a.Luas();
System.out.println();
b.Keliling();
System.out.println();
c.Luas();
System.out.println();
d.Keliling();
}
}
output program :
Polymorphism pada Java
Setelah inheritance, hal yang penting bagi object oriented programming adalah polymorphism. Secara leksikal polymorphism merupakan sesuatu yang mempunyai banyak bentuk. Dalam pemrograman polymorphism merupakan dapat diartikan suatu modul yang mempunyai nama sama, tapi memiliki behavior yang berbeda sehingga listing code implementasinya berbeda. Dan dalam bahasa yang lain adalah kemampuan dari reference untuk mengubah sifat sesuai dengan object yang dijadiin acuan. Polymorphism menyediakan menyediakan multiobject dari sub class yang berbeda diperlakukan sebagai object tunggal dari super class.
contoh program :
/*disimpan nama Hewan.java*/
class Hewan {
String nama, jenis, bersuara;
Hewan(String nama, String jenis, String bersuara){
//sintaks menampilkan nama
this.nama=nama;
this.jenis=jenis;
this.bersuara=bersuara;
}
public String toString(){
return "Ini adalah "+jenis+"\nNamanya "+nama+"\n"+bersuara;
}
public void bersuara(){
}
}
/*disimpan nama Polimorfisme.java*/
import java.util.*;
class Polimorfisme{
public static void main(String args[]){
Hewan[] hewannya = {
new Anjing("Broni", "Herder", "Hug Hug Hug......"),
new Kucing("Kiti", "Persia", "Meong.. Meong... "),
new Ayam("Toki", "Buras", "kuk kruyu. ")
};
Hewan pilihHewan;
Random pilih = new Random();
for (int i = 0; i<5 ; i++){
pilihHewan = hewannya[pilih.nextInt(hewannya.length)];
System.out.println("\nPilihan Anda:\n" + pilihHewan);
}
}
}
/*disimpan nama Ayam.java*/
class Ayam extends Hewan{
private String nama,jenis,bersuara;
Ayam(String nama, String jenis, String bersuara){
//sintaks menampilkan nama
super(nama, jenis, bersuara);
}
public void ShowAyam(){
System.out.println("Nama Ayam : "+nama);
System.out.println("Jenis Ayam : "+jenis);
//sintaks menampilkan nama dan jenis hewan
}
public void bersuara(){
//sintaks menampilkan suara hewan
System.out.println("kuk kruyu. ");
}
}
/*disimpan nama Kucing.java*/
class Kucing extends Hewan
{
private String nama,jenis,bersuara;
Kucing(String nama, String jenis, String bersuara){
//sintaks menampilkan nama
super(nama, jenis, bersuara);
}
public void ShowKucing(){
System.out.println("Nama Kucig : "+nama);
System.out.println("Jenis Kucing : "+jenis);
//sintaks menampilkan nama dan jenis hewan
}
public void bersuara(){
//sintaks menampilkan suara hewan
System.out.println("Meong.. Meong... ");
}
}
/*disimpan nama Anjing.java*/
class Anjing extends Hewan{
private String nama,jenis,bersuara;
Anjing(String nama, String jenis, String bersuara){
//sintaks menampilkan nama
super(nama, jenis, bersuara);
}
public void ShowAnjing(){
System.out.println("Nama Anjing : "+nama);
System.out.println("Jenis Anjing : "+jenis);
//sintaks menampilkan nama dan jenis hewan
}
public void bersuara(){
//sintaks menampilkan suara hewan
System.out.println("Hug Hug Hug...... ");
}
}
semoga bermanfaat :)
referensi
disini
disini
Badal Fatan Rayhan