Hallo guys , di postingan ini gua bakal jelasin tentang abstract class sama interface, langsung aja yaa.
Abstract Class
merupakan Class yang khusus dibuat untuk keperluan inheritance. Tujuan dari pembuatan abstract class ini ialah untuk membuat definisi umum bagi class-class
yang akan menjadi turunan darinya. Abstract Class dapat digunakan untuk mendefinisikan
method yang nantinya akan diimplementasi di Derived Class (kelas turunan /
inherit dari Abstract Class ).
Pengertian Interface
Interface adalah
kumpulan method yang hanya memuat deklarasi dan struktur method, tanpa detail
implementasinya. Sedangkan detail dari method berada pada class yang
mengimplementasikan interface tersebut. Interface digunakan jika ingin
mengaplikasikan suatu method yang spesifik, yang tidak diperoleh dari proses
inheritance. Tipe data yang boleh pada interface hanya tipe data konstan.
Penjelasan Tentang
Abstract Dan interface :
· Beberapa perbedaan
Interface dan Kelas Abstrak yaitu :
Abstract class dapat
memiliki tipe data dengan semua tipe data, sedangkan interface tipe datanya
hanya berupa konstanta Method pada abstract class dapat berupa method kongkrit
dan method abstract. Sedangkan pada interface semua method harus berupa method
abstract.
Abstract Class
|
Interface Class
|
Bisa
berisi Abstract dan non Abstract method
|
Hanya
Boleh Berisi Abstract method
|
Bisa
Mendeklarasikan Constant dan Instance
|
Hanya
bisa mendeklarasikan Constrant
|
Method
boleh bersifat static dan Final
|
Method
tidak boleh bersifat static dan final
|
Suatu
abstact class hanya bisa meng-extend satu abstract class lainnya.
|
Suatu
interface hanya bisa meng-extend interface lainnya. Dan
tidak bisa meng-implement class atau interface lainnya.
|
1. Abstract
Abstrac adalah kata kunci yang digunakan
untuk menyatakan kelas atau metode untuk
menjadi abstract. Sebuah metode tidak
memiliki implementasi, semua kelas yang
berisi metode abstract harus dari mereka
abstrak, walaupuntidak semua kelas abstrak
memiliki metode abstrak.Objek dari kelas
abstrak tidak dapat instantiated, tetapi dapat
diperpanjang olh kelas lain. Semua
subclass dari kelas abstrak harus menyediakan
implementasi untuk semua metode abstrak,
atau juga harus abstrak.
Key word di java:
Private
Kata kunci yang digunakan dalam
pembagian lapangan, metode, atau kelas batin,
anggota swasta hanya dapat diakses oleh
anggota lain dari kelas mereka sendiri.
Public
Piblic kata kunci yang digunakan dalam
deklarasi metode, kelas, atau bidang, kelas
umum, metode dan bidang dapat diakses
oleh anggota dari setiap kelas.
This
Digunakan untuk mewakili sebuah instance
dari kelas dimana ia muncul. This dapat
digunakan untuk mengakses anggota kelas
sebagai referensi. This juga kata kunci
digunakan untuk meneruskan panggilan
dari satu konstuktor dikelas untuk konstuktor
lain dikelas yang sama.
Extends
Digunakan dalm sebuah deklarasi kelas
untuk menetukan superclass, digunakan
dalam deklarasi interface nutuk
menentukan satu atau lebih superinterface. Kelas X Y
meluas kelas untuk menmbah
fungsionalitas, baik dengan menambahkan field atau
metode ke Y kelas, atau dengan
meng-overridemetode kelas Y. Antarmuka Z
memperluas satu atau lebih interface
dengan menmbahkan metode. Kelas X dikatakan
sebagai subclass Y kelas, interface Z
dikatakan sebagai interface dari interface itu
meluas. Juga digunakan untuk menentukan
batas atas sebuah ketik Generics.
Implement
Untuk menentukan satu atau lebih
interface yang diimplementasikan oleh kelas saat
ini. Kelas A mewarisi jenis dan metode
abstrak dinyatakan oleh interface.
Protected
Kata kunci yangdigunakan dalam pembagian
lapangan, metode,atau kelas batin,
anggota yang dilindungi hanya dapat
diakse oleh anggota kelas mereka sendiri, bahwa
kelas itu subclass atau kelas yang sama.
abstract class AbstractClass
{
abstract protected String getValue();
abstract protected String prefixValue(String prefix);
abstract protected String gabung();
public void printOut()
{
System.out.println(this.getValue());
}
}
class ConcreteClass1 extends AbstractClass
{
protected String getValue()
{
return "Tatank";
}
public String gabung()
{
String a="Mr.tatank hoby meloncat";
return a;
}
public String prefixValue(String prefix)
{
return prefix + "Tatank";
}
}
class ConcreteClass2 extends AbstractClass
{
public String getValue()
{
return "kelly";
}
public String gabung()
{
return "Mrs.kels hobi melet";
}
public String prefixValue(String prefix)
{
return prefix + "kelly";
}
}
class mainn
{
public static void main (String args [])
{
ConcreteClass1 class1 = new ConcreteClass1();
class1.printOut();
System.out.println(class1.prefixValue("Mr."));
System.out.println(class1.gabung());
ConcreteClass2 class2 = new ConcreteClass2();
class2.printOut();
System.out.println(class2.prefixValue("Mrs."));
System.out.println(class2.gabung());
}
}
pertanyaan:
1.bolehkah di tambah statemen pada method get value? atau prefix value pada abstract class?
2.pakah yang terjadi ketika getvalue() pada concreteclass di hapus?
3.jelaskan perbedaan hak akses pada getvalue() pada child class concreteclass1 dan concreteclass2!
4.buatlah abstract method yg bernama getvalue2() pada concreteclass1 apa yg terjadi?
5.ubah concreteclass1 menjadi abstract class , apa yang terjadi?
jawaban :
1.Pada abstrack method tidak boleh di isikan body, hanya
bisa deklarasi saja
2. ada nya kesalahan penulisan atau deklarrasi pada method
.. yang harus nya ada nama methodnya
3 di concrete1 get value nya menggunakan protected yang
hanya bisa di akses oleh class turunan sedangkan di concrete2 menggunakan hak
akses public yang dapat di akses oleh semua class
4. terjadi error krn seharus nya tdiak bileh ada mehod
abstract dalam suat konkrate class
5. terjadi error karena pada class abstract tidak boleh di
buat objek nya
{
abstract void setMerk(String merk);
abstract String getMerk();
}
interface Mesin extends Mobil
{
public void setNoMesin(String nomor_mesin);
public String getNoMesin();
}
class Mobil1 implements Mesin
{
private String merk,nomor_mesin;
public void setMerk(String merk)
{
this.merk=merk;
}
public String getMerk()
{
return merk;
}
public void setNoMesin(String nomor_mesin)
{
this.nomor_mesin=nomor_mesin;
}
public String getNoMesin()
{
return nomor_mesin;
}
}
abstract class Mobil2 implements Mesin
{
private String nomor_mesin;
public void setNoMesin(String nomor_mesin)
{
this.nomor_mesin=nomor_mesin;
}
public String getNoMesin()
{
return nomor_mesin;
}
}
class Mainterface
{
public static void main(String [] args)
{
Mobil1 m1=new Mobil1();
m1.setMerk("Ford");
m1.setNoMesin("01010");
System.out.println(m1.getMerk());
System.out.println(m1.getNoMesin());
}
}
pertanyaan 2
1.coba abstract class mobil2 di ganti jadi public , apa yang terjadi?
2.apa yang terjadi jika di tambahkan method biasa yan mengandung body pada interface mobil, kelaskan !
3.jelaskan perbedaan body program antara class abstract sma interface !
Pengamatan 2
1 .dikarenakan Mobil2 itu bukan abstract class dan tidak
override method gerMark pada classMobil
harus tambahkan abstract di depan class mobil 2
2.dia akan menjadi error karena di class interface smua
method nya harus abstrak method, di abstract method itu tidak boleh ada body
hanya deklarasinya saja
3.klo abstrak class method boleh ada abstract dan boleh ada
concrete mothod sedang interface hanya bisa abstract method saja.
itu aja sih yang bisa gua tampilin, terlebih dan terkurang tolong di maafin :)
yuhuu, infonya sangat membantu
BalasHapussolder uap
makasih infonya :)
BalasHapusjessloginformsql.wordpress.com