Interface, Class, dan Object
Class adalah implementasi konkrit dari suatu interface. Sedangkan Abstract Class adalah implementasi abstract (tidak konkrit) dari suatu interface. Class/Abstract dapat juga disebut sebagai template/definisi dari suatu Object. Class/Abstract tidak harus mengimplentasi suatu interface
Object adalah instance dari suatu Class
Biasanya di Object Oriented semua di mulai Interface -> Abstract Class -> Class
Contoh untuk membuat Object Oriented tentang Animal
ada interface Animal (bukan class) dengan behaviour
- jenis
- suara
public interface Animal {
public String getJenis();
public String getSuara();
}
Nah di interface ini tidak di implementasikan dulu karena masih sangat2 belum jelas / abstract (bedakan dengan Abstract Class) ini adalah binatang apa
Kemudian di implementasikan ke Abstract Class eg: Mamalia, Reptil, Unggas, yang belum konkrit (Abstract Class) karena di behaviour suara belum jelas (belum bisa di definisikan secara konkrit), tapi di definisi jenis sudah bisa di definisikan dengan jelas
public abstract class Mamalia implements Animal {
return “mamalia”
}
// untuk suara bisa di definisikan atau tidak
// ini adalah contoh abstract methods
//public abstract getSuara();
}
public abstract class Reptil implements Animal {
public String getJenis() {
return “reptil”
}
// untuk suara bisa di definisikan atau tidak
// ini adalah contoh abstract methods
//public abstract getSuara();
}
… dsb
Dari abstract class di atas, di definisikan lagi sekarang dengan konkrit untuk masing2 animal dengan meng extends Abstract class yang di golongankan berdasarkan jenis.
public class Kambing extends Mamalia {
public String getSuara() {
return “mbeeek”
}
}
public class Ular extends Reptil {
public String getSuara() {
return “zzzzz”
}
}
… dsb
Nah untuk pemakaian dari semua diatas maka, perlu di buat object (instance dari suatu class, bukan instance dari interface)
Kambing kambing1 = new Kambing();
Ular ular1 = new Ular();
Mamalia mamalia1 = new Kambing();
Animal animal1 = new Ular();
System.out.println(kambing1.getJenis()); // hasil “mamalia”
System.out.println(kambing1.getSuara()); // hasil “mbeek”
System.out.println(mamalia1.getSuara()); // hasilnya apa hayoo ?
System.out.println(animal1.getJenis()); // hasilnya apa hayoo ?
dan kalau baris code di atas di tambah baris ini hasilnya apa hayoo ?
Mamalia mamalia2 = kambing1;
System.out.println(mamalia2.getSuara()); // hasilnya apa hayoo ?
Dan kenapa yang dibawah ini pasti error dan apa bedanya dengan yang diatas Reptil reptil2 = kambing;
Dan kalau begini
Animal animal3 = kambing;
System.out.println(animal3.getSuara()); // hasilnya apa hayoo ?
animal3 = ular1;
System.out.println(animal3.getSuara()); // hasilnya apa hayoo ?
animal3 = animal1;
System.out.println(animal3.getSuara()); // hasilnya apa hayoo ?