Assalamu’alaikum warahmatullahi wabarokatuh. Pada kesempatan kali ini saya akan menjelaskan ABSTARCT DAN INTERFACE sebagai berikut :
Sekarang coba jalankan class Main1. Caranya, Klik kanan lalu pilih Run File atau bisa juga dengan menekan Shift+F6.
Maka hasilnya:
Abstract Class adalah class yang mempunyai setidaknya satu abstract method. Abstract method adalah method yang tidak memiliki body (hanya deklarasi method). Abstract class tidak bisa dibuat obyeknya. Obyek hanya bisa dibuat dari non-abstract class (concrete class). Konsekuensinya, suatu abstract class haruslah diturunkan dimana pada subclass tersebut berisi implementasi dari abstract method yang ada di super class-nya.
Contoh Kode Program :
package Teori;
public abstract class Parent{
public abstract void mAbstract();
public static void main(String[] args){
// membuat objek P dari class Parent
Parent P = new Parent();
}
}
Penjelasan :
Teori.Parent abstract; cannot be instantiated
Parent p = new Parent();
1 error
artinya :
Abstract Class
Bila subclass yang diturunkan dari abstract class tidak mengimplementasikan isi semua method abstrak parent class, maka subclass tersebut harus tetap dideklarasikan abstract. Dan deklarasi method abstract pada subclass tersebut boleh tidak dituliskan kembali.
Contoh Kode Program :
package Teori;
public abstract class Parent{
public abstract void mAbstract();
}
class Child extends Parent{
public void mAbstract(){}
}
Contoh Kode Program :
package Teori;
public abstract class Parent{
public abstract void mAbstract();
}
abstract class Child extends Parent{
}
Abstract Class
Kegunaan Class Abstract :
- 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)
- Deklarasikan method abstract, jika ada satu atau lebih subclass yang diharapkan mempunyai fungsionalitas yang sama tapi implementasi berbeda.
- Gunakan class abstract untuk mendefinisikan behavior secara umum sebagai superclass sedangkan subclass menyediakan implementasi detail.
- Jika class abstract semua method merupakan method abstract, sebaiknya class abstract tersebut diganti menjadi Interface (dijelaskan selanjutnya).
Buat class baru bernama Shape dan program sebagai berikut :
Berikutnya, buat class Triangle. Class ini merupakan turunan dari class Shape. Berikut ini program class Triangle :
Setelah itu, buat satu lagi turunan dari class Shape, yakni Circle. Berikut ini program untuk class Circle:
Terakhir, buat class Main untuk mencoba membuat objek dengan class yang sudah dibuat. Coba perhatikan objek segitiga dan lingkaran! Kedua objek ini memiliki tipe yang sama yakni Shape, tapi mereka dibuat dari class yang berbeda.
Nah, sekarang coba jalankan programnya. Maka hasilnya :
Berikutnya, buat class Triangle. Class ini merupakan turunan dari class Shape. Berikut ini program class Triangle :
Setelah itu, buat satu lagi turunan dari class Shape, yakni Circle. Berikut ini program untuk class Circle:
Nah, sekarang coba jalankan programnya. Maka hasilnya :
Interface
Interface berbeda dengan class. Interface berisi method kosong dan konstanta. Method dalam interface tidak mempunyai statement. Sehingga deklarasi method dalam interface sama dengan deklarasi abstract method pada abstract class. Method yang dideklarasikan didalam interface secara otomatis adalah public dan abstract. Variable dalam interface secara otomatis adalah public, static, dan final.
Contoh Kode Program :
public interface Relation {
public boolean isGreater( Object a, Object b);
public boolean isLess( Object a, Object b);
public boolean isEqual( Object a, Object b);
}
Interface
Mengimplementasikan Interface :
- Bila sebuah class mengimplementasikan suatu interface, maka semua konstanta dan method interface akan dimiliki oleh class ini.
- Method pada interface harus diimplementasikan pada class yang mengimplementasikan interface ini.
- Bila class yang mengimplementasikan interface tidak mengimplemetasikan semua method dalam interface, maka class tersebut harus dideklarasikan abstract.
Deklarasi Implementasi Interface :
<modifier> class <name> [extends <super class>]
[implements <interface> [, <interface>]* ] {
<declarations>*
}
Interface
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);
}
}
Contoh Kode Program :
public class Line implements Relation {
private double x1;
private double x2;
private double y1;
private double y2;
public Line(double x1, double x2, double y1, double y2){
this.x1 = x1;
this.x2 = x2;
this.y1 = y1;
this.y2 = y2;
}
public double getLength(){
double length = Math.sqrt((x2-x1)*(x2-x1) +
(y2-y1)* (y2-y1));
return length;
Interface
• Class Line mengimplementasikan interface Relation, pastikan semua method yang ada di interface diimplementasikan
di class Line. Jika tidak maka muncul error.
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
Error di atas adalah contoh ketika method isGreater tidak di buat/di override di dalam class Line
• Jika kedua class di satukan dalam satu file (Relation di gabung dengan Line maka akan muncul error sbb :
Relation.java:7: class Line is public, should be declared in a file named Line.java
public class Line implements Relation {
^
1 error
Solusinya : public ci salah satu nya harus di buang
Interface
Inheritance pada p Interface :
- Kita bisa membuat subinterface dengan menggunakan kata extends.
- Satu class boleh mengimplementasikan lebih dari satu interface.
- Suatu interface boleh mengextends lebih dari satu interface.
- Interface bukan bagian dari hirarki class
- Namun interface dapat mempunyai relasi inheritance
public interface PersonInterface {
void doSomething();
}
public interface StudentInterface extends PersonInterface {
void doExtraSomething();
}
Interface
Mengimplementasikan Multiple Interface :
- Satu class boleh mengimplementasikan lebih dari satu interface.
- Bila suatu class akan dijadikan subclass dan akan mengimplementasikan interface, maka kata extends harus lebih dulu dari implements.
Kegunaan Interface :
Semua class yang mengimplementasikan sebuah interface tertentu berarti classclass tersebut mengimplementasikan methods yang sama dengan kata lain class-class tersebut mempunyai fungsionalitas yang sama.
Contoh Program dan Hasil Output Airplane :
Setelah itu, buat class baru di dalam <default package> dengan nama Phone dan isi kodenya seperti ini :
Contoh Program dan Hasil Output Airplane :
Contoh Program dan Hasil Output interface Flyer :
Setelah itu, buat class baru di dalam <default package> dengan nama Phone dan isi kodenya seperti ini :
Berikutnya, buat lagi class baru dengan nama PhoneUser dan isi kodenya seperti ini :
Berikutnya kita akan membuat class implementasi dari interface Phone. Kita coba buat satu saja dulu.
Silahkan buat class baru dengan nama Xiaomi, kemudian isi kodenya seperti ini:
Terakhir, buatlah class Main dengan isi sebagai berikut :
Maka hasilnya:
Saya ucapkan Terima kasih banyak untuk semuanya yang telah melihat blog ini. Semoga blog ini bermanfaat bagi kalian untuk menambah ilmu pengetahuan dan pengalaman.Aamiin.
https://www.petanikode.com/java-oop-interface/
Comments
Post a Comment