Minggu, 19 Oktober 2014

Contoh Sederhana Polimorfisme dalam Bahasa Java

//PROGRAM 7-14
// Mendefinisikan kelas induk
class Bentuk {
  public double luas() {
    System.out.println("Tidak didefinisikan");
    return 0;
  }   
}

class PersegiPanjang extends Bentuk {
  private double panjang;
  private double lebar;
   
  PersegiPanjang(int p, int l) {
    panjang = p;
    lebar = l;
  }
   
  public double luas() {
    System.out.println("Dalam objek persegi panjang:");
    return (panjang * lebar);
  }   
}

class BujurSangkar extends Bentuk {
  private double sisi;
   
  BujurSangkar(int s) {
    sisi = s;
  }
   
  public double luas() {
    System.out.println("Dalam objek bujursangkar:");
    return (sisi * sisi);
  }   
}

class Segitiga extends Bentuk {
  private double alas;
  private double tinggi;
   
  Segitiga(int a, int t) {
    alas = a;
    tinggi = t;
  }
   
  public double luas() {
    System.out.println("Dalam objek segitiga:");
    return ((alas * tinggi)/2);
  }   
}

class Lingkaran extends Bentuk {
  private double jarijari;

  private final double PI = 3.1416;
   
  Lingkaran(int r) {
    jarijari = r;
  }
   
  public double luas() {
    System.out.println("Dalam objek lingkaran:");
    return (PI * jarijari * jarijari);
  }   
}

class DemoPolimorfisme2 {
  public static void main(String[] args) {   
   
    Bentuk obj;
   
    PersegiPanjang pp = new PersegiPanjang(5, 3);
    BujurSangkar bs = new BujurSangkar(4);
    Segitiga st = new Segitiga(4, 3);
    Lingkaran lk = new Lingkaran(2);
   
    // obj mengacu pada objek PersegiPanjang
    obj = pp;
    // akan memanggil method yang terdapat pada PersegiPanjang
    System.out.println("Luas : " + obj.luas());
    System.out.println();
   
    // obj mengacu pada objek PersegiPanjang
    obj = bs;
    // akan memanggil method yang terdapat pada BujurSangkar
    System.out.println("Luas : " + obj.luas());
    System.out.println();
   
    // obj mengacu pada objek PersegiPanjang
    obj = st;
    // akan memanggil method yang terdapat pada Segitiga
    System.out.println("Luas : " + obj.luas());
    System.out.println();
   
    // obj mengacu pada objek PersegiPanjang
    obj = lk;
    // akan memanggil method yang terdapat pada Lingkaran
    System.out.println("Luas : " + obj.luas());
    System.out.println();
  }       
}