Berikut adalah Gambar Tree dari program Abstract class & interface.
Abstract Class
Abstract class merupakan salah satu konsep class dalam pemrograman Java. Abstract class memiliki fungsi yang sama dengan superclass yaitu untuk diimplementasikan ke class turunan / subclass, tetapi kita tidak bisa bisa membuat objek baru dari class abstract dan method pada class abstract methodnya tidak memiliki body (hanya nama dan parameter), berbeda dengan superclass yang bisa membuat objek baru dari superclass tersebut.
Syntax Abstract Class
abstract class <nama class>{
//some code or method
abstract <nama method>();
}
Contoh Abstract Class
abstract class Kendaraan {
//abstract method
abstract void warna(String color);
abstract void idNo(String id_no);
abstract void owner(String owner);
}
Penjelasan Contoh
Dari contoh di atas Kendaraan sebagai nama dari class abstract dan memiliki tiga buah abstract method yaitu warna(),idNo(),owner(). Lihat pada ketiga method tersebut tidak memiliki body / tidak ada statement didalamnya, hanya ada nama dan parameter.
Concrete Class
Concrete Class adalah suatu class turunan / subclass yang mengimplementasi / mewarisi (extends) method dari class Abstract. Fungsi concrete class adalah untuk meng-overidding abstract method dari abstrac class, karena jika tanpa overidding akan terjadi error.
Syntax Concrete Class
class <nama class> extends <nama abstract class>{
//some code or method here
//override abstract method
<nama method abstract class>(){
//some code here
}
}
Contoh Concrete Class
class Motor extends Kendaraan {
void motorType(String type) {
System.out.println("Type: "+type);
}
//method overidding dari abstract class Kendaraan
void warna(String warna) {
System.out.println("Warna: "+warna);
}
//method overidding dari abstract class Kendaraan
void idNo(String id_no) {
System.out.println("ID Number: "+id_no);
}
//method overidding dari abstract class Kendaraan
void owner(String owner) {
System.out.println("Owner: "+owner);
}
}
Penjelasan Contoh
Dari contoh di atas motor sebagai nama concrete class. Class motor ini mewarisi / extends (konsep inheritance Java) dari abstract class Kendaraan. Dalam class motor terdapat empat method, tiga method diantaranya adalah overidding method dari class abstract Kendaraan dan satu method lagi adalah method milik class motor. Tiga abstract method warna(),idNo(),owner()yang tadinya tidak memiliki body / statement kini telah dioverdding.
Interface
Interface juga merupakan salah satu konsep class dalam pemrograman Java. Interface memiliki fungsi sebagai tempat menyimpan method kosong (tanpa body). Sama seperti Abstract class, interface juga hanya bisa diimplementasikan ke class lain dan diwariskan ke interface lain. Class yang mengimplementasi sebuah interface wajib untuk mengoveridding method - method kosong yang ada dan harus di set ke public.
Syntax Interface
interface <nama inteface>{
//some attribut or method
//void method
<nama method>();
}
Contoh Interface
interface modifyKendaraan {
//method kosong
void changeColor(String color);
void changeEngineType(String engine);
void upSpeed(int speed);
}
abstract class Kendaraan implements modifyKendaraan {
void engineStatus() {
System.out.println("Engine Status: Ready");
}
//overidding method dari interface modifyKendaraan
public void changeWarna(String warna) {
System.out.println("Warna was changed to: "+warna);
}
//overidding method dari interface modifyKendaraan
public void changeEngineType(String engine) {
System.out.println("Engine was changed to: "+engine);
}
//overidding method dari interface modifyKendaraan
public void upSpeed(int speed) {
System.out.println("Speed was up to: "+speed+" KM/H");
}
//abstract method
abstract void warna(String warna);
abstract void idNo(String id_no);
abstract void owner(String owner);
}
Penjelasan Contoh
Dari contoh di atas modifyKendaraan sebagai nama dari interface dan memiliki tiga buah method kosong yaitu changeWarna(), changeEngineType(), upSpeed(). Lihat pada ketiga method tersebut tidak memiliki body / tidak ada statement didalamnya, hanya ada nama dan parameter.
Dari abstract class Kendaraan yang mengimplementasi kan interface modifyKendaraan terdapat overidding tiap method yang ada diinterface yaitu method changeWarna(), changeEngineType(), upSpeed()dan tiap method tersebut di set menjadi public (syarat menggunakan interface).
Contoh Implementasi sebuah program dengan konsep Abstract Class, Concrete Class dan Interface.
Program Kendaraan
Kode program:
//interface
interface modifyKendaraan {
//method kosong
void changeWarna(String warna);
void changeEngineType(String engine);
void upSpeed(int speed);
}
//abstract class
abstract class Kendaraan implements modifyKendaraan {
void engineStatus() {
System.out.println("Engine Status: Ready");
}
//overidding method dari interface modifyKendaraan
public void changeWarna(String warna) {
System.out.println("Warna was changed to: "+warna);
}
//overidding method dari interface modifyKendaraan
public void changeEngineType(String engine) {
System.out.println("Engine was changed to: "+engine);
}
//overidding method dari interface modifyKendaraan
public void upSpeed(int speed) {
System.out.println("Speed was up to: "+speed+" KM/H");
}
//abstract method
abstract void warna(String warna);
abstract void idNo(String id_no);
abstract void owner(String owner);
}
//concrete class
class motor extends Kendaraan {
void motorType(String type) {
System.out.println("Type: "+type);
}
//method overidding dari abstract class Kendaraan
void warna(String warna) {
System.out.println("Warna: "+warna);
}
//method overidding dari abstract class Kendaraan
void idNo(String id_no) {
System.out.println("ID Number: "+id_no);
}
//method overidding dari abstract class Kendaraan
void (String owner) {
System.out.println("Owner: "+owner);
}
}
//subclass
class SupraX extends motor {
void motorName(String name) {
System.out.println("Car Name: "+name);
}
}
//main class
public class Main {
//main program
public static void main(String[] args) {
Transportation newTransportation = new motor();
motor newmotor = new SupraX();
SupraX newSupraX = new SupraX();
newmotor.motorType("SupraX");
newSupraX.motorName("SupraX125");
newKendaraan.owner("Eko");
newKendaraan.warna("Hitam-Hijau");
newKendaraan.idNo("181297");
newKendaraan.engineStatus();
System.out.println("\nModification\n");
newKendaraan.changeWarna("Merah");
newmotor.warna("Hijau");
newmotor.changeEngineType("Honda");
newSupraX.engineStatus();
newSupraX.carType("SupraX");
newSupraX.upSpeed(2000);
}
}
Output Program
Type: SupraX
Warna Name: SupraX125
Owner: Eko
Warna: Hitam-Hijau
ID Number: 181297
Engine Status: Ready
Modification
Color was changed to: Merah
Color: Hijau
Engine was changed to: Honda
Engine Status: Ready
Type: SupraX
Speed was up to: 2000 KM/H
Penjelasan kode Program
Dari contoh program diatas terdapat sebuah interface bernama modifyKendaraan, abstract class Kendaraan, concrete class motor dan sub class SupraX.
Langsung menuju main program karena inti dari ketiga konsep ini digunakan terdapat dimain program. Kode Kendaraan newKendaraan = new Motor(); yang berarti membuat sebuah objek dari conrete class motor yang mengacu pada abstract class kendaraan, jadi objek newKendaraan hanya bisa menggunakan method yang ada dalam abstract class Kendaraan. Berikut ini adalah kode pemanggilan method dari abstract class Kendaraan, newKendaraan.owner("Eko");, newKendaraan.color("Hitam-Hijau");, newKendaraan.idNo("181297");, newKendaraan.engineStatus();. Kemudian ada kode motor newMotor = new SupraX(); yang berarti membuat sebuah objek dari sub class SupraX yang mengacu pada concrete class Motor, jadi objek newmotor hanya bisa menggunakan method yang ada dalam concrete class Motor dan abstract class Kendaraan. Berikut ini adalah kode pemanggilan method dari concrete class Motor, newMotor.motorType("SupraX");, newMotor.color("Hijau");.Lalu ada kode SupraX newSupraX = new SupraX(); yang berarti membuat sebuah objek dari sub class SupraX yang mengacu pada sub class SupraX, jadi objek newSupraX hanya bisa menggunakan method yang ada dalam sub class SupraX, concrete classMotor dan abstract class Kendaraan. Berikut ini adalah kode pemanggilan method dari sub class SupraX, newSupraX.motorName("SupraX125");,newSupraX.engineStatus(); ,newSupraX.motorType("SupraX");
Lalu dimana peran interface modifyKendaraan ?
Terdapat kode newKendaraan.changeColor("Merah"); yang berarti objek newKendaraan memanggil method changeColor() dari interface modifyKendaraan yang telah dioeveridding diabstract class Kendaraan, hal ini bisa terjadi karena ada kode abstract class Kendaraan implements modifyKendaraan kunci dari penggunaan interface adalah kode implements. Hal ini juga berlaku bagi concrete class motor dan sub class SupraX, karena telah diwariskan dengan ada nya kode class motor extends Kendaraan yang berarti concrete class motor mewarisi / memilki apa yang ada dalam abstract class Kendaraan dan class SupraX extends motor yang berarti sub class SupraX mewarisi / memilki apa yang ada dalam abstract class Kendaraan dan concrete class motor. Berikut contoh kode dari keduanya newCar.color("Hijau"); ,newmotor.changeEngineType("Honda");,newSupraX.engineStatus();,newSupraX.carType("SupraX");
,newSupraX.upSpeed(2000);
Kesimpulan
Abstract class digunakan ketika ingin membuat desain untuk mengelompokkan beberapa subclass dengan mengimplementasikan beberapa kode ke subclass - subclass tersebut
Syntax abstract class diawali dengan kata abstract
Terdapat abstract method / method tanpa bodydalam abstract class
Abstract class tidak bisa dibuat objek baru
Concrete class digunakan ketika ingin mengimplementasikan apa yang ada di dalam abstract class
Concrete class sama dengan subclass
Concrete class harus mengoveridding abstract method dari abstract class
Interface digunakan ketika ingin membuat aturan untuk class lain yang saling berhubungan dengan konsep inheritance
Syntax interface diawali dengan kata interface
Terdapat method kosong / method tanpa body pada interface
Overidding method dari interface harus di set ke public
Terimakasih, Semoga Bermanfaat, Mohon maaf bila ada salah kata.

Tidak ada komentar:
Posting Komentar