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...."); } }