Abstract class adalah kelas yang memiliki setidaknya satu abstract method. Abstract method adalah method yang tidak memiliki body atau hanya deklarasi nama method. Abstract class digunakan ketika method subclass memiliki method yang sama dengan superclass atau disebut overidding. Kegunaan method adalah
1. Class Abstract berisi beberapa method dan beberapa method abstract. Class Abstract berisi sebagian implementasi, dan subclass yang melengkapi implementasinya. Dengan kata lain Class Abstract memiliki beberapa kesamaan (Bagian yang diimplementasikan oleh subclass) dan memiliki perbedaan (method yang dimiliki sendiri oleh class abstract)
2. Deklarasikan method abstract, jika ada satu atau lebih subclass yang diharapkan mempunyai fungsionalitas yang sama tampil implementasi berbeda.
3. Gunakan class abstract untuk mendefinisikan behavior secara umum sebagai superclass, sedangkan subclass menyediakan implementasi detail.
4. Jika class abstract semua method merupakan method abstract, sebaiknya class abstract tersebut diganti menjadi Interface. [http://yuliana.lecturer.pens.ac.id/OOP/Kelas%20Lanjut%202/T%20-%20Class%20Abstract%20dan%20Interface.pdf]
package TugasAbstractConcrete;
//Inheritance Tumbuhan
abstract class Tumbuhan {
abstract void memasak();
void bernafas() { System.out.println("Tumbuhan membutuhkan oksigen untuk bernafas"); }
}
class Dikotil extends Tumbuhan {
void memasak() { System.out.println("Tumbuhan Dikotil memasak makanan dengan fotosintesis");}
void jenis(){System.out.println("Tumbuhan berjenis Dikotil");}
void biji(){System.out.println("Bijinya berkeping 2");}
void akar(){System.out.println("Akarnya berupa tunggang");}
void daun(){System.out.println("Memiliki daun ganda");}
void batang(){System.out.println("Memiliki batang yang bercabang");}
}
class Monokotil extends Tumbuhan{
void memasak() {System.out.println("Tumbuhan Monokotil memasak makanan dengan fotosintesis");}
void jenis() {System.out.println("Tumbuhan berjenis Monokotil");}
void biji() {System.out.println("Bijinya berkeping 1");}
void akar() {System.out.println("Akarnya berupa serabut");}
void daun() {System.out.println("Memiliki daun tunggal");}
void batang() {System.out.println("Memiliki batang yang tidak bercabang");}
}
class Mawar extends Dikotil {
void duri(){System.out.println("Bunga mawar beduri tajam");}
}
//interface untuk tumbuhan pemakan hewan
interface PemakanHewan {
void memakanHewan();}
class BungaBangkai extends Monokotil implements PemakanHewan{
public void memakanHewan() {System.out.println("Bunga bangkai menjebak serangga untuk dimakan");}
}
//Inheritance Hewan memiliki interface memakan hewan
abstract class Hewan {
abstract void memakanHewan();}
class karnivora extends Hewan implements PemakanHewan{
public void memakanHewan() {System.out.println("Hewan karnivora memakan hewan lain");}
}
public class Program {
public static void main(String[] args) {
// TODO Auto-generated method stub
Mawar mawar = new Mawar();
BungaBangkai bangkai = new BungaBangkai();
Karnivora hewanBuas = new Karnivora();
System.out.println("Class Mawar mewarisi subclass Dikotil yang mewarisi superclass Tumbuhan");
mawar.bernafas();
System.out.println("");
System.out.println("Class Mawar mewarisi subclass Dikotil");
mawar.akar();
mawar.batang();
mawar.biji();
mawar.daun();
System.out.println("");
System.out.println("Method overriding dari class dikotil untuk method abstract class Tumbuhan");
mawar.memasak();
System.out.println("");
System.out.println("Class Mawar dengan methodnya sendiri");
mawar.duri();
System.out.println("");
System.out.println("Class bunga bangkai mewarisi subclass Monokotil yang mewarisi superclass Tumbuhan");
bangkai.bernafas();
System.out.println("");
System.out.println("Class bunga bangkai mewarisi subclass Monokotil");
bangkai.akar();
bangkai.batang();
bangkai.biji();
bangkai.daun();
System.out.println("");
System.out.println("Method overriding dari class dikotil untuk method abstract class Tumbuhan");
bangkai.memasak();
System.out.println("");
System.out.println("Class bunga bangkai mewarisi method dari interface PemakanHewan");
bangkai.memakanHewan();
System.out.println("");
System.out.println("Class Karnivora mewarisi method dari interface PemakanHewan");
hewanBuas.memakanHewan();
System.out.println("");
}
}
|
mantap gan :) sangat membantu gan :)
BalasHapusTerimakasih, semoga kembali
Hapusijin share gan ,,,sippp:)
BalasHapusTerimakasih, semoga kembali
Hapus