Minggu, 15 April 2012

Inheritance dan Polimorfisme dalam Bahasa Pemrograman Java

Melanjutkan pembahasan mengenai Pemrograman Berbasis Objek (OOP), kali ini kami akan membahas mengenai Inheritance ( Pewarisan ) dan Pilimorfisme ( Banyak bentuk ) serta contoh program yang mengandung berkaitan dengan keduanya.


  • Inheritance ( Pewarisan )
Pewarisan adalah hubungan antara class dimana dalam satu class ada superclass atau class induk dari class yang lain. Pewarisan menunjuk pada properti dan behaviour yang diterima dari nenek moyang dari class. Ini dikenal juga sebagai hubungan “is-a”. Perhatikan pada hirarki berikut.


SuperHero adalah superclass dari class FlyingSuperHero dan UnderwaterSuperHero. Catatan bahwa FlyingSuperHero “is-a” SuperHero. Sebagaimana juga UnderwaterSuperHero “is-a” SuperHero.

Pewarisan merupakan suatu keuntungan besar dalam pemrograman berbasis object, karena suatu sifat atau method didefinisikan dalam superclass, sifat ini secara otomatis diwariskan dari semua subclasses. Jadi, Anda dapat menuliskan kode method hanya sekali dan mereka dapat digunakan oleh semua subclass. Subclass hanya butuh mengimplementasikan perbedaannya sendiri dan induknya.

Berikut Contoh Programnya : 
//class Person.java  

public class Person {  
  
protected String name;  
protected int age;  
  
public Person(String name, int age) {  
    this.name = name;  
    this.age = age;  
}  
  
public String getName() {  
    return this.name;  
}  
  
public int getAge() {  
    return this.age;  
}  

===================================================================
//class Student.java  
  
public class Student extends Person {  
  
 private String schoolName;  
  
 public Student(String name, int age, String schoolName) {  
     super(name, age);  
     this.schoolName = schoolName;  
 }  
  
 public String getSchoolName() {  
     return this.schoolName;  
 }  
}  

===================================================================
//class Main.java  
  
public class Main {  
  
  public static void main(String[] args) {  
      Person person = new Person("Ainan Nurizzaman", 20);  
      Student student = new Student("Sylvia Syamrotul L", 20, "Universitas Gunadarma");  
  
      System.out.println("Informasi tentang object person : ");  
      System.out.println("Nama : " + person.getName());  
      System.out.println("Umur : " + person.getAge());  
      System.out.println();  
  
      System.out.println("Informasi tentang object student : ");  
      System.out.println("Nama : " + student.getName());  
      System.out.println("Umur : " + student.getAge());  
      System.out.println("Nama Sekolah : " + student.getSchoolName());  
  }  
}   

Output :
Untuk melakukan inheritance di java, kita menggunakan keyword extends. Dalam contoh program diatas class Studentlah yang mengiherit class Person sehingga class Student yang melakakukan extends, dimana dalam pendefinisian class nya menjadi class Student extends Person. Dalam proses inheritance ini subclass bisa mengakses semua field dari super classnya, kecuali yang beratribut private. Akan tetapi superclass tidak bisa mengakses field dari subclass apapun atributnya. Dalam program diatas sudah dicontohkan bahwa method getName dan getAge yang hanya terdapat pada class Person dapat dengan bebas diakses oleh Class turunannya yaitu class Student. Mengenai constructornya adalah sebagai berikut, dalam class person ia membutuhkan dua variable dalam constructornya, yaitu String name, dan int age, dan dalam class student ia membutuhkan 3 variable ketika membuat constructornya yaitu String name, int age, dan String schoolName, dimana dapat kita lihat bahwa 2 dari 3 variabel constructor dari class student sama dengan variable pada class person, maka kita tidak perlu membuatnya lagi, akan tetapi hanya perlu menggunakan keyword “super” untuk memanggil constructor dari superclass.


  • Polimorfisme
Polimorfisme adalah kemampuan dari sebuah object untuk membolehkan mengambil beberapa bentuk yang berbeda. Secara harfiah, “poli” berarti banyak sementara “morph” berarti bentuk. Menunjuk pada contoh sebelumnya pada pewarisan, kita lihat bahwa object SuperHero dapat juga menjadi object FlyingSuperHero atau object UnderwaterSuperHero.

Berikut Contoh Programnya :

public class Orang {
    public String nama;
    public String alamat;


    //Constructor...
    public Orang(){
        }


    public Orang(String nama) {
        this.nama = nama;
    }
    public Orang(String nama,String alamat){
        this.nama=nama;
        this.alamat=alamat;
    }


    //accessor method mengembalikan nilai
public String getName(){
        return nama;
        }


    //mutator methode untuk mengubah nilai dari instance.
public void setName(String nama){
        this.nama = nama;
       }
}
===================================================================
public class Mahasiswa extends Orang{
    String jeniskelamin;

    public Mahasiswa() {

     //super digunakan untuk memanggil constructor terdekat pada kelas Orang.

        super("Sylvia");
    }

    //overidde methode dari kelas Orang..
    public String getName(){
        return nama;
        }
    public void setName(String nama){
        this.nama = nama;
        }
 }
===================================================================
public class Pekerja extends Orang{

   public Pekerja() {

        super("Ainan");
    }

    //overide dari kelas Person

    public String getName(){

        return nama;
        }
    public void setName(String nama){

        this.nama = nama;
        }
}
===================================================================
public class CallOrang {
public static void main(String[] args){

        //contoh polimorfisme di java

        Orang call;

        Mahasiswa m = new Mahasiswa();

        Pekerja n = new Pekerja();
        //memanggil dari kelas mahasiswa

        call = m;

        String smp = call.getName();

        System.out.println("aku dari bagian Mahasiswa : " + smp);

        //memanggil dari kelas pekerja

        call = n;

        String sma = call.getName();

        System.out.println("aku dari bagian Pekerja : " + sma);

       }
       }

Output :



JENI (JAVA EDUCATION NETWORK INDONESIA)


2 komentar: