Monday, April 16, 2012

Pengertian Pewarisan dan Polymorphism pada Pemrograman Java

Pewarisan (Inheritance)
Pewarisan adalah salah satu konsep terpenting pemrograman berorientasi objek dan mempunyai dampak langsung pada merancang dan menulis class. Pewarisan adalah proses penciptaan class baru dengan mewarisi karekteristik class yang telah ada, ditambah karakteristik unik kelas yang telah ada. Subclass mewarisi semua method dan variabel dari superclassnya. Secara praktis berarti bahwa jika superclass telah mendefinisikan perilaku yang kita perlukan, maka kita tidak perlu mendefinis ulang perilaku itu, kita cukup membuat class yang merupakan subclass dari superclass yang dimaksud.

Polymorphism
Polymorphism merupakan konsep yang sangat penting di dalam konsep OOP. Polymorphism sebagaimana yang kita ketahui dari bahasannya berarti mempunyai banyak bentuk. Dua objek atau lebih dikatakan sebagai polymorphic bila objek-objek itu mempunyai antarmuka–antarmuka identik namun mempunyai perilaku-perilaku yang berbeda.


Contoh Program Pewarisan (Inheritance)

//Program utama
public class TestMobil {
public static void main(String[] args){
Mobil mobil = new Mobil();
Kijang kijang = new Kijang();
Escudo escudo = new Escudo();
BMW bmw = new BMW();
mobil.injakPedalGas();
mobil = kijang;
mobil.injakPedalGas();
mobil = escudo;
mobil.injakPedalGas();
mobil = bmw;
mobil.injakPedalGas();
}
}

//Buat kelas baru sebagai objek dari program utama
public class Mobil {
public void injakPedalGas(){
System.out.println("Mobil berjalan...");
}
}
class Kijang extends Mobil{
public void injakPedalGas(){
System.out.println("Mobil Melaju dengan kecepatan 80 Km/jam...");
}
}
class Escudo extends Mobil {
public void injakPedalGas(){
System.out.println("Mobil Melaju dengan kecepatan 70 Km/jam...");
}
}
class BMW extends Mobil{
public void injakPedalGas(){
System.out.println("Mobil Melaju dengan kecepatan 100 Km/jam...");
}
}
Output




Contoh Program Polymorphism

//Program Utama
public class VirtualDemo
{
public static void main(String [] args)
{
Salary s = new Salary("Mohd Mohtashim", "Ambehta, UP",
3, 3600.00);
Employee e = new Salary("John Adams", "Boston, MA",
2, 2400.00);
System.out.println("Call mailCheck using : Salary reference --");
s.mailCheck();
System.out.println("\nCall mailCheck using : Employee reference --");
e.mailCheck();
}
}

//Sebagai Objek Program ke 1
public class Employee
{
private String name;
private String address;
private int number;
public Employee(String name, String address, int number)
{
System.out.println("Constructing an Employee");
this.name = name;
this.address = address;
this.number = number;
}
public void mailCheck()
{
System.out.println("Mailing a check to " + this.name
+ " " + this.address);
}
public String toString()
{
return name + " " + address + " " + number;
}
public String getName()
{
return name;
}
public String getAddress()
{
return address;
}
public void setAddress(String newAddress)
{
address = newAddress;
}
public int getNumber()
{
return number;
}
}

//Sebagai Objek Program ke 2
public class Salary extends Employee
{
private double salary; //Annual salary
public Salary(String name, String address, int number, double
salary)
{
super(name, address, number);
setSalary(salary);
}
public void mailCheck()
{
System.out.println("Within mailCheck of Salary class ");
System.out.println("Mailing check to " + getName()
+ " with salary " + salary);
}
public double getSalary()
{
return salary;
}
public void setSalary(double newSalary)
{
if(newSalary >= 0.0)
{
salary = newSalary;
}
}
public double computePay()
{
System.out.println("Computing salary pay for " + getName());
return salary/52;
}
}

Output Polymorphism