Pengertian Inheritance (Pewarisan)
Inheritance
(penurunan sifat / pewarisan), ini merupakan ciri khas dari OOP yang tidak
terdapat pada pemrograman prosedural gaya lama. Dalam hal ini, inheritance
bertujuan membentuk obyek baru yang memiliki sifat sama atau mirip dengan obyek
yang sudah ada sebelumnya (pewarisan). Obyek turunan dapat digunakan membetuk
obyek turunan lagi dan seterusnya. Setiap perubahan pada obyek induk, juga akan
mengubah obyek turunannya. Susunan obyek induk dengan obyek turunannya disebut
dengan hirarki obyek.
Pada dasarnya, kita melakukan pewarisan untuk membuat
kelas baru (class turunan /subclass) yang masih memiliki sifat atau spesifikasi
dari class dari mana ia turunkan (superclass). Untuk melakukan ini java telah
keyword extends yang dapat dipakai pada waktu kita mendeklarasikan class.
Beberapa
aturan tentang pewarisan yang perlu anda perhatikan:
- Java tidak mengizinkan pewarisan berganda, yaitu membuat subclass yang diturunkan dari beberapa superclass sekaligus. Contoh : class Z hendak diturunkan dari class X dan juga sekaligus dari kelas Y. hal yang memungkinkan dalam C++ tetapi tidak dalam java.
- Suatu subclass pada dasarnya juga adalah class biasa, maka anda tetap dapat melakukan pewarisan pada subclass ini.
Program untuk menjalankan (Main Method)
import java.util.*;import java.text.*;public class employee {private String name;private double salary;private int lama;Date awalDate;public employee (String n, double s, Date awal) {name=n;salary=s;awalDate=awal;}public String getName() {return name;}public double getSalary() {return salary;}public void cetak () {Date today = new Date();SimpleDateFormat format= new SimpleDateFormat("dd MMMM yyyy");String d = format.format(awalDate);System.out.println(" Nama : " + getName());System.out.println(" Tanggal masuk : " + d);System.out.println (" Gaji Awal : Rp " +getSalary());}public double gajiNaik() {return salary;}public void cetakSalary() {System.out.println (" Gaji Sekarang : "+gajiNaik());}public void setWaktu () {Date today = new Date();;if (today.getMonth()lama=0;}else{lama= today.getYear() - awalDate.getYear();}}public int getWaktu () {return lama;}}class programer extends employee {public programer (String n, double s, Date awal) {super (n,s,awal);}public double gajiNaik () {if (super.getWaktu()<=10 && super.getWaktu()>=1)return super.getSalary()*(1+0.01*super.getWaktu());elsereturn super.getSalary()*(1+0.02*super.getWaktu());}}
import java.util.*;public class employeeDemo {public static void main (String [] args) {employee[] staf =new programer[3];staf[0] = new programer("Dindadinho",1000000,new Date ("11 february 1992"));staf[1] = new programer("Larry Page",200000,new Date ("01 June 2011"));staf[2] = new programer("Bill Gates",4000000,new Date("03 July 2005"));System.out.println ("Daftar Gaji Pegawai PT.GS");for (int i=0;i{ System.out.println("Staff ke " + (i+1) + " : ");staf[i].cetak();staf[i].setWaktu();System.out.println (" lama kerja : "+staf[i].getWaktu()+ " tahun");staf[i].gajiNaik();staf[i].cetakSalary();}}}