Archive

Posts Tagged ‘Abstract Class Java’

Abstract Class dan Interface dalam Java

October 15, 2010 3 comments

Abstract class adalah kelas yang terletak pada posisi tertinggi pada hierarki kelas. Kelas ini digunakan sebagai basis bagi penurunan kelas lainnya, sehingga abstract class tidak dapat diinstansiasi secara langsung menjadi object. Suatu abstract class bisa mengandung method kongkrit dan/atau method abstract. Abstract method meruapakan suatu method yang tidak mempunyai badan method. Hanya berupa nama method dan parameter inputan method. Ketika suatu abstract class diturunkan/ di-extends, maka subclass harus mengimplementasikan semua method abstract pada parent/ base class. Jika tidak mengimplementasikan semua method abstract maka subclass harus dideklarasikan sebagai abstract class.

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 bila Anda ingin mengaplikasikan suatu method yang spesifik, yang tidak diperoleh dari proses inheritance. Tipe data yang boleh pada interface hanya tipe data konstan. Setelah mengetahui apa itu interface. Timbul pertanyaan Mengapa membutuhkan interface?

  • Memecahkan bagian yang rumit dan spesifik. Dengan menggunakan class atau interface oleh vendor maka dalam pembuatan perangkat lunak menjadi lebih cepat.
  • Keterbatasan inheritance pada Java. Interface menjawab kebutuhan untuk melakukan multiple inheritance

Apakah Interface = Abstract class ?

Ya menurut saya sih antara keduanya memiliki kemiripan, tapi tidak sama. Mirip bukan berarti sama kan? Terdapat beberapa perbedaan antara keduanya 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.

Contoh

GraphicObject.java

abstract class GraphicObject {
int x,y;
void moveTo(int newValueX, int newValueY)
{
x = newValueX;
y = newValueY;
}
abstract void drawShape();
abstract void resize();

}

Circle.java

public class Circle extends GraphicObject {
void resize()
{
System.out.println(“Circle Resize”);
}
void drawShape()
{
System.out.println(“Circle Shape”);
}
void posisition()
{
System.out.println(this.x+this.y);
}
}

Main.java

public class Main {

/**
* @param args the command line arguments
*/
public static void main(String[] args) {
Circle Lingkaran = new Circle();
Lingkaran.moveTo(5,5);
Lingkaran.drawShape();
Lingkaran.resize();
Lingkaran.posisition();
}

}

Semoga bermanfaat.