Pemrograman Java: Abstrak Dan Interface
Pemrograman Java: Abstrak Dan Interface
Abstract Class
Abstract class Kelas Abstrak (abstract class) adalah kelas yang terletak pada posisi tertinggi dari hierarki kelas. Kelas ini digunakan sebagai basis dari kelas kelas lainnya, sehingga tidak dapat diinstansiasi secara langsung menjadi objek. Kelas kelas yang diturunkan dari kelas abstraklah yang harus mendefinisikan secara detail method yang ada dalam kelas abstrak.
Sering muncul pada puncak hierarki class objectoriented programming(OOP), mendefinisikan segala type action/tindakan yang mungkin dengan object semua subclass dari class
Abstract Class
Method abstract
Method di dalam abstract class tidak mempunyai implementasi Untuk membuat abstract method, tulis saja deklarasi method tanpa body dan gunakan keyword abstract
Sebagai contoh,
public abstract void someMethod();
public abstract class LivingThing { public void breath(){ System.out.println("Living Thing breathing..."); } public void eat(){ System.out.println("Living Thing eating..."); } /** * abstract method walk * Kita ingin method ini di-overrride oleh subclass dari * LivingThing */ public abstract void walk();
Abstract class
Ketika sebuah class meng-extends abstract class LivingThing, diwajibkan meng-override abstract method walk(), jika tidak, subclass tersebut juga akan menjadi abstract class, dan oleh karena itu tidak bisa diinstansiasi Sebagai contoh,
public class Human extends LivingThing { public void walk(){ System.out.println("Human walks..."); } }
interface
interface
Interface Adalah semacam blok spesial yang hanya berisi tanda tangan method (dan mungkin konstan). Menggambarkan tandatangan dari seperangkat method, tanpa body Menggambarkan cara standard dan publik penetapan behavior class Mengijinkan class,dengan mengabaikan lokasi mereka di dalam hirarki class untuk menerapkan behavior. CATATAN: Interface memperlihatkan polymorphism juga, sejak program diperbolehkan memanggil sebuah method interface, dan versi yang sesuai dari method tersebut akan dieksekusi tergantung pada jenis object yang dilewatkan kepada pemanggilan method interface
Membuat interface
Untuk membuat sebuah interface, kita tulis:
Membuat interface
Sebagai contoh, mari buat sebuah interface yang mendefinisikan hubungan antara dua object sesuai dengan pesanan dari object.
public interface Relation { public boolean isGreater( Object a, Object b); public boolean isLess( Object a, Object b); public boolean isEqual( Object a, Object b); }
Membuat interface
Membuat interface
public double getLength(){ double length = Math.sqrt((x2-x1)*(x2-x1) + (y2-y1)* (y2-y1)); return length; } public boolean isGreater( Object a, Object b){ double aLen = ((Line)a).getLength(); double bLen = ((Line)b).getLength(); return (aLen > bLen); } public boolean isLess( Object a, Object b){ double aLen = ((Line)a).getLength(); double bLen = ((Line)b).getLength(); return (aLen < bLen); } public boolean isEqual( Object a, Object b){ double aLen = ((Line)a).getLength(); double bLen = ((Line)b).getLength(); return (aLen == bLen); }
Membuat interface
Ketika class Anda mencoba untuk mengimplementasikan sebuah interface, pastikan selalu bahwa Anda mengimplementasikan semua method dari interface tersebut, jika tidak, Anda akan mendapatkan kesalahan ini.
Line.java:4: Line is not abstract and does not override abstract method isGreater(java.lang.Object,java.lang.Object) in Relation public class Line implements Relation ^ 1 error
Perbedaan: Anda tidak dapat membuat instance dari sebuah interface Sebagai contoh:
PersonInterface pi = new PersonInterface(); //ERROR!
Persamaan:
Perbedaan:
Sebuah class hanya bisa meng-EXTENDS SATU superclass, tetapi juga bisa meng-IMPLEMENTASIKAN BANYAK interface Sebagai contoh:
public class Person implements PersonInterface, LivingThing, WhateverInterface { } //beberapa kode disini
public class ComputerScienceStudent extends Student implements PersonInterface, LivingThing { } //Beberapa kode disini