Materi PBO `Konsep Pewarisan`


PEWARISAN

 . konsep PBO untuk mewariskan sifat, karakteristik dan kriteria pada
   induk / super class terhadap class" turunannya, dengan syarat modifier
   yang bisa digunakan adalah protected dan tidak final.
 . sifat yang tidak akan bisa diwariskan dari induk class ke class turunan
   adalah method constructor.
 . modifier public bukan tidak bisa digunakan seperti modifier protected,
   namun tidak tepat jika digunakan / diimplementasikan di konsep
   pewarisan
 . pada pewarisan terhadap class dengan `extends`, hanya diizinkan 
   untuk mewariskan ke satu induk class,
   sedangkan pewarisan terhadap interface dengan `implements`, 
   memungkinkan untuk mewariskan ke lebih dari satu interface.
 . keyword yang berkaitan dengan pewarisan:
   . extends
     -> sebagai penunjuk antara class induk dan class turunan

   . super
     -> digunakan oleh anak class untuk memberi perlakuan yang sama 
        seperti yang ada pada induk class

   . overriding method
     -> mendefinisikan ulang method (selain constructor) 
        pada anak class dengan kriteria tertentu,
        a. nama method harus sama dengan di induk class
        b. jumlah dan tipe parameter harus sama persis
        c. (sebaiknya) diberi anotasi tambahan berupa 'Override'
           sebelum deklarasi method overrided.
 ---------------------------------------------------------------
        d. jika dilakukan pada class biasa, maka method" tertentu
           atau bisa semuanya dideklarasikan di anak class,
           tetapi
           jika dilakukan pada interface, maka semua method wajib 
           diimplementasikan ulang di anak class.
class Mahasiswa {
   String nim, nama;
   int usia;
   // ...
   Mahasiswa () {}
   void setNim (String nim) { 
     this.nim = nim; 
   }
}
class A : induk
class B : anak
class C : lainnya

class B extends A {
}

class B extends A, C {   // -> Forbiden
}
interface X : induk 1
interface Y : induk 2
interface Z : induk 3

class A implements X, Y {
}

class B implements X, Y, Z {
}
interface X {
  
   final String nama_interface = "method utama"; // konstanta
   
   public void setParameter();
   public void setContains (int x, int y);
   public boolean isEmpty(Object o);

}
   . protected
     -> sebagai penanda atribut / method mana yang bisa diwariskan
        atau diakses oleh anak class.

   . interface
     -> mirip halnya dengan class, namun di interface tidak ada
        method constructor, dan berisi deklarasi konstanta serta
        nama method" saja.
     
     -> interface tidak bisa dibuatkan atau dilakukan
        instansiasi object.
    
     -> memungkinkan untuk melakukan pewarisan majemuk

   . implements
   . abstract

public class BidangDimensiDua {

   private int parameter;

   public BidangDimensiDua() {
   }

   protected double hitungLuas() { 
      return 0;
   }

   protected void infoLuas() {
     System.out.println ("Luas Bidang = " + hitungLuas());
   }

}
public class Persegi extends BidangDimensiDua {

  private int sisi;

  public void setSisi (int sisi) { this.sisi =  sisi; }
  public int getSisi() { return sisi; }
  
  @Overrides
  public double hitungLuas() {
    return sisi * sisi;
  }

  public void infoLuas () {
    System.out.println ("Luas Persegi = " + hitungLuas());
  }

}
public class MainMainFathya {
  public static void main (String[] ar) {
    Persegi x = new Persegi();
    x.setSisi(100);
    x.infoLuas();

    BidangDimensiDua y = new Persegi();
    y.setSisi(100);
    y.infoLuas();
    
  }
}

public class Animal {
  private String nama, jenis;

  public Animal() {}

  protected void bersuara() {
    System.out.println ("Suara hewannya .... ");
  }
}

public class Kucing extends Animal {
  
  public void bersuara() {
    super.bersuara();
    System.out.println ("meowwww....");
  }

}

Leave a Reply