Class Abstract dan method abstract
Pada Class abstract kita buat contoh seperti membuat superclass bernama LivingThing. class ini mempunyai method
tertentu seperti eat, sleep, dan walk. Akan tetapi, ada beberapa method
di dalam superclass yang sifatnya tidak dapat digeneralisasi. Kita ambil
contoh, method walk. Tidak semua
kehidupan berjalan(walk) dalam cara yang sama. Ambil manusia sebagai
misal, kita manusia berjalan dengan dua kaki, dimana kehidupan lainnya seperti
sapi berjalan dengan empat kaki. Akan tetapi, beberapa ciri umum dalam
kehidupan sudah biasa, itulah kenapa kita inginkan membuat superclass umum
dalam hal ini.
Kita dapat membuat
superclass yang mempunyai beberapa method dengan implementasi sedangkan yang
lain tidak. Class jenis ini yang disebut dengan class abstract.
Sebuah class
abstract adalah class yang tidak dapat di-instantiate. Seringkali muncul di
atas hirarki class pemrograman berbasis object, dan mendefinisikan keseluruhan
aksi yang mungkin pada object dari seluruh subclasses dalam class. Bentuk
umumnya sebagai berikut :
abstract class
namaKelas{
//badan kelas }
Ada beberapa aturan
dalam penulisan class abstract :
·
Jika
sebuah kelas memiliki method abstrak maka kelas itu harus menjadi kelas
abstrak.
·
Sebuah
kelas abstrak dapat saja memiliki method yang tidak abstrak.
·
Jika
sebuah kelas abstrak diturunkan menjadi kelas konkret, maka semua method
abstrak dari kelas abstrak haruslah ditulis ulang / dibuat ulang di kelas
konkretnya dan diberi detail dari methodnya.
·
Jika
method abstrak di turunkan dan kelas turunannya adalah kelas abstrak, maka
tidak perlu menulis ulang method yang abstrak.
Method dalam class
abstract yang tidak mempunyai implementasi dinamakan method abstract. Untuk membuat method abstract, tinggal menulis
deklarasi method tanpa tubuh class dan digunakan menggunakan kata kunci
abstract. Bentuk umumnya sebagai berikut :
abstract tipe
namaMethod(daftar-parameter);
contoh :
public abstract void someMethod();
Sekarang mari membuat
contoh class abstract.
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-overridden oleh
subclasses */
public abstract void walk(); }
Ketika class meng-extend class abstract LivingThing,
dibutuhkan untuk override method abstract walk(), atau lainnya, juga subclass
akan menjadi class abstract, oleh karena itu tidak dapat di-instantiate.
Contohnya,
public class Human extends LivingThing
{
public void walk(){
System.out.println("Human walks...");
} }
Jika class Human tidak
dapat overridde method walk, kita akan menemui pesan error berikut ini,
Human.java:1: Human is not abstract and
does not override abstract method walk() in LivingThing
public class Human extends LivingThing
^
1
error
Petunjuk penulisan
program:
Gunakan class abstract untuk mendefinisikan secara
luas sifat-sifat dari class tertinggi pada hirarki pemrograman berbasis object,
dan gunakan subclassesnya untuk menyediakan rincian dari class abstract.
PACKAGE
Pengertian Package
Package adalah sarana/cara pengelompokkan dan
pengorganisasian kelas-kelas dan interface yang sekelompok menjadi suatu unit
tunggal dalam library.Package juga mempengaruhi mekanisme hak akses ke
kelas-kelas di dalamnya.
Fungsi Package
mengelompokkan
file kelas yang terkait (karena jenisnya, fungsinya atau karena alasan lainnya)
pada direktori yang sama, dimana di dalam setiap kelasnya terdapar directive
(statement java dalam code yang digunakan untuk membuat kelas) package yang mengacu pada direktori
tersebut.
Pengaruh Package terhadap Method main()
Kelas yang mengandung method main()
memilki syarat tidak berada dalam suatu package, dan hirarki posisi foldernya
di atas package yang diimport.
Membuat Package
Ada tiga langkah untuk membuat package :
1.
Mendeklarasikan dan
memberi nama package.
2.
Membuat struktur dan
nama direktori yang sesuai dengan struktur dan nama package.
3.
Mengkompilasi
kelas-kelas sesuai dengan packagenya masing-masing.
Mendeklarasikan dan Memberi Nama Package
Deklarasi package harus diletakkan pada
bagian paling awal (sebelum deklarasi import) dari source code setiap kelas
yang dibungkus package tersebut.
Bentuk umum deklarasi package :
Deklarasi
package harus diletakkan pada bagian paling awal (sebelum deklarasi import)
darisource code setiap kelas yang dibungkus package tersebut.
Bentuk umum
deklarasi package :
package namaPackage;
Deklarasi
tersebut akan memberitahukan kompilator, ke library manakah suatu kelas
dikompilasi dan dirujuk. Contoh:
Package
ContohPKg;
Dimana
java menggunakan sistem direktori untuk menyimpan paket yang dibuat. Sebagai
contoh apabila kita membuat paket dengan nama ContohPkg , maka kita harus
memiliki sebuah direktori bernama ContohPkg di dalam tempat kita membuat kode
program utama. Dan nama paket dan nama direktori harus benar benar sama
penulisan hurufnya.
Syarat nama package :
·
Diawali huruf kecil
·
Menggambarkan
kelas-kelas yang dibungkusnya
·
Harus unik (berbeda
dengan nama package standard)
·
Merepresentasikan path
dari package tersebut.
·
Harus sama dengan nama
direktorinya.
Contoh package standard :
1.
java.lang (berisi
kelas-kelas fundamental yang sering digunakan).
2.
java.awt dan javax.swing (berisi kelas-kelas
untuk membangun aplikasi GUI)
3.
java.io (berisi
kelas-kelas untuk proses input output)
Membuat Struktur Direktori
Pada langkah
ini, buatlah direktori menggunakan file manager (di windows menggunakan
explorer) sesuai struktur package dari langkah sebelumnya.
Kemudian
tempatkan kelas-kelas tersebut ke direktori yang bersesuaian (mirip seperti
menyimpan file-file ke dalam folder).
Package dapat
bersarang di package lain, sehingga dapat dibuat hirarki package.
Bentuk umum pernyataan package multilevel/package
di dalam package :
package namaPackage1[.namaPackage2[.namaPackage3]];
Contoh hirarki package di JDK :
package java.swing.event ;
File kode .java dan file .class
dari paket tersebut harus disimpan di dalam direktori java/swing/event (dalam
sistem operasi windows maupun Unix/Linux) paket yg dibuat tidak dapat diubah
tanpa mengubah nama directorinya.
Compile dan Run Kelas dari suatu Package
Selanjutnya masing-masing kelas tersebut
dalam package tersebut dikompilasi menjadi byte code (*.class). Artinya package
tersebut siap digunakan.
Menggunakan Package
Ada dua cara menggunakan suatu package
yaitu :
Kelas yang menggunakan berada dalam
direktori (package) yang sama dengan kelas-kelas yang digunakan. Maka tidak
diperlukan import.
Kelas yang menggunakan berada dalam
direktori (package) yang berbeda dengan kelas-kelas yang digunakan. Maka pada
awal source code di kelas pengguna harus mencantumkan :
import
namaPackage.NamaKelas; atau import namaPackage.*;
Contoh :
import
java.text.DecimalFormat;
import
javax.swing.*;
INTERFACE
Pengertian Interface
INTERFACE
Pengertian Interface
Selain
method, interface juga dapat berisi sekumpulan variable, namun variable yang
dideklarasikan di dalam interface harus bersifat final(nilainya tidak dapat
diubah /konstan).
Sebagai
contoh : Dalam kehidupan nyata dapat diketahui ada manusia yang bekerja sebagai
tentara, penyanyi, pengacara, dan sebagainya, tentunya manusia-manusia tersebut
selain harus memiliki method standard sebagai seorang manusia, juga harus
memiliki method yang sesuai dengan pekerjaannya. Dengan demikian untuk membuat
objek manusia yang bekerja sebagai penyanyi, harus dibuat kelas yang merupakan
turunan kelas manusia yang meng-implementasikan interface penyanyi.
Ciri-ciri
dari interface
Method interface tidak punya tubuh,
sebuah interface hanya dapat mendefinisikan konstanta dan interface tidak
langsung mewariskan hubungan dengan class istimewa lainnya, mereka
didefinisikan secara independent.
Tidak bisa membuat instance atau objek
baru dari sebuah interface.
Ciri umum lain adalah baik interface
maupun class dapat mendefinisikan method. Bagaimanapun, sebuah interface tidak
punya sebuah kode implementasi sedangkan class memiliki salah satunya.
Beberapa perbedaan Interface dan Abstract Class :
- Interface hanya bisa mendefinisikan
Method, tidak bisa mengimplementasikan, sedangkan Abstrat
Class bisa mengimplementasikan Method
- Interface tidak boleh terdiri dari
field atau property, Abstract Class bias
- Interface tidak boleh terdiri dari
konstruktor dan destruktor, sedangkan Abstract class bisa:
Abstract class
|
Interface
|
Bisa berisi abstract dan
non-abstract method.
|
Hanya boleh berisi abstract
method.
|
Kita harus menuliskan sendiri
modifiernya.
|
Kita tidak perlu susah2 menulis
public abstract di depan nama method. Karena secara implisit, modifier untuk
method di interface adalah public danabstract.
|
Bisa mendeklarasikan constant dan instance
variable.
|
Hanya bisa mendeklarasikan constant.
Secara implisit variable yang dideklarasikan di interface bersifatpublic, static dan final.
|
Method boleh bersifat static.
|
Method tidak boleh bersifat static.
|
Method boleh bersifat final.
|
Method tidak boleh bersifat final.
|
Suatu abstact class hanya bisa
meng-extend satu abstract class lainnya.
|
Suatu interface bisa meng-extend
satu atau lebih interface lainnya.
|
Suatu abstract class hanya bisa
meng-extend satu abstract class dan meng-implement beberapa
interface.
|
Suatu interface hanya bisa meng-extend interface
lainnya. Dan tidak bisa meng-implement class atau interface
lainnya.
|
perbedaan class abstract dan interface
Abstract Class dikatakan Abstract karena class tersebut tidak diimplementasikan
secara langsung di class tersebut. Melainkan diimplementasikan di class lain
yang merupakan class anak dari abstract class itu. Itulah sebabnya dinamakan
abstract class. Berikut perbedaan antara class abstract dengan interface:
·
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.
·
Interface Class jelas
berbeda dengan abstract class. Karena class ini mengimplementasikan methodnya
di class lain dihubungkan dengan kata "implements". Method class
interface tadi diimplementasikan dengan nama method yang sama di class yang
diimplementasikan.
Contoh Abstract
Class :
public
abstract class MahlukHidup {
protected boolean BisaTerbang = false; protected String Nama; abstract void bernafas ( ) ; |
Dari contoh di atas dapat kita lihat bahwa pada abstract class Mahluk hidup terdapat 1 method yang tidak memiliki implementasi. Implementasi method bernafas nanti akan diimplementasikan di class anak karena biasanya class abstract dapat menjadi class induk.
Contoh Interface Class :
interface
Pekerjaan {
public void namaPekerjaan ( ) ; |
Pada contoh interface class di atas dapat dilihat perbedaan antara abstract class dan interface class. Interface class memiliki method yang tidak memiliki im- plementasi.
Pewarisan
Interface
Sebuah kelas dapat
mewarisi interface dengan menggunakan kata kunci implements, dimana kelas
tersebut dapat mewarisi beberapa interface.
Contoh Mewarisi Interface
public class NamaKelas
implements NamaInterface {
public void namaProsedur(){
// isi prosedur }
public TipeData namaFungsi(){
// isi fungsi }}
Pewarisan Antar Interface Interface dapat mewarisi interface lainnya menggunakan kata kunci extends.
Interface dapat mewarisi lebih dari satu interface.
Contoh Pewarisan Antar Interface
public interface NamaInterface
extends InterfaceLain, InterfaceDua {
// isi interface }
Sumber:
http://rimanda567rifarifiy.blogspot.com/p/abstact-class.html
https://www.google.com/#q=+pewarisan+interface
https://www.google.com/#q=+peckage+pada+java
http://www.termasmedia.com/2012-05-29-02-56-17/java/118-pengertian-fungsi-dan-kegunaan-paket-package-di-java.html
public class NamaKelas
implements NamaInterface {
public void namaProsedur(){
// isi prosedur }
public TipeData namaFungsi(){
// isi fungsi }}
Pewarisan Antar Interface Interface dapat mewarisi interface lainnya menggunakan kata kunci extends.
Interface dapat mewarisi lebih dari satu interface.
Contoh Pewarisan Antar Interface
public interface NamaInterface
extends InterfaceLain, InterfaceDua {
// isi interface }
Sumber:
http://rimanda567rifarifiy.blogspot.com/p/abstact-class.html
https://www.google.com/#q=+pewarisan+interface
https://www.google.com/#q=+peckage+pada+java
http://www.termasmedia.com/2012-05-29-02-56-17/java/118-pengertian-fungsi-dan-kegunaan-paket-package-di-java.html
Bagus Bagus
BalasHapusrangkuman yang menarik :)
BalasHapusazzam ganteng
BalasHapusBangsat
BalasHapus