Belajar Pemrograman Java Dari Dasar

10 Aturan Penting Class Abstract Pada Bahasa Pemrograman Java

Abstraction dalam Java dapat dicapai dengan menggunakan class abstract dan interface. Abstraction akan menampilkan fungsionalitas dan menyembunyikan kompleksitas atau dengan kata lain akan menyembunyikan data yang tidak relevan dan hanya akan menunjukkan fitur-fitur penting untuk objek.

Abstraction ini digunakan untuk memisahkan ide-ide dari implementasinya. Jadi abstraction akan menerapkan ide-ide pada satu class kemudian ide-ide tersebut dapat diterapkan pada class-class lainnya sesuai dengan kebutuhan dari class-class tersebut.


abstract class dan method pada Java


Misalnya:

public abstract class Benda {
 /**
  Method abstract
  */
 abstract void bergerak(double jarak, double waktu);
 
}

public class Mobil extends Benda {

 @Override
 void bergerak(double jarak, double waktu) {
  double kecepatan = waktu / jarak;
  System.out.println("Kecepatan mobil adalah " + kecepatan);
 }

}

public class Motor extends Benda {

 @Override
 void bergerak(double jarak, double waktu) {
  double kecepatan = waktu / jarak;
  System.out.println("Kecepatan motor adalah " + kecepatan);

 }

}

Hal yang perlu diingat bahwa class abstract dan interface adalah dua hal yang tidak lengkap atau tidak nyata (tidak konkrit).

Method abstract ini bisa dikatakan sebagai ide.
Method abstract tidak memiliki bodi. Jadi mengimplementasikan method abstract artinya memberinya bodi sehingga subclass bisa menggunakan method tersebut sesuai dengan yang diinginkan. 

Berikut ini adalah 10 aturan yang perlu diketahui dalam class abstract pada Java.
1. Method abstract tidak dapat dinyatakan static

Jika method abstract dinyatakan static seperti di bawah ini:

public abstract class Benda {
 
 static abstract void bergerak(double jarak, double waktu);

}

Maka compile time error dapat terjadi.

2. Field dan juga constructor tidak bisa di deklarasikan sebagai abstract

Contoh:

public abstract class Benda {
 
 /**
  field tidak dibolehkan sebagai abstract
  */
 abstract double berat;
 
 /**
  constructor tidak dibolehkan sebagai abstract
  */
 abstract Benda(){
  
 }

}

3. Access modifier private tidak bisa digunakan dalam method abstract.

Karena method ini akan diimplementasikan pada subclass, jika private maka class lain tidak akan bisa menggunakannya.

Contoh:

public abstract class Benda {
 
 /**
  Method abstract tidak boleh private
  */
 private abstract void bergerak(double jarak, double waktu);

}


4. Konstruktor di dalam class abstract bisa di buat dengan jumlah sesuai dengan kebutuhan.

Jika constructor tidak dibuat maka secara otomatis compiler akan menyediakan constructor default.

public abstract class Benda {
 
 /**
  Constructor pertama
  */
 Benda(){
  
 }
 
 /**
  Constructor kedua
  */
 Benda(String nama){
  
 }
 
 /**
  Method abstract
  */
 abstract void bergerak(double jarak, double waktu);

}


5. Setiap subclass dari class abstract harus mengimplementasikan semua method abstract.

Bila class itu tidak mengimplentasikan method-method tersebut maka class itu harus dinyatakan sebagai abstract.

Contoh:

public abstract class Benda {
 
 /**
  Method abstract 1
  */
 abstract void bergerak(double jarak, double waktu);
 
 /**
  Method abstract 2
  */
 abstract void tampilkanDetail();
 
 /**
  Method Abstract 3
  */
 abstract void berhenti();
 
}

public class Mobil extends Benda {

 @Override
 void bergerak(double jarak, double waktu) {
  
  
 }

 @Override
 void tampilkanDetail() {
  
  
 }

 @Override
 void berhenti() {
  
  
 }

}


6. Method pada class abstract bisa saja terdiri dari kombinasi antara method konkrit dan method abstract.

Contoh:

public abstract class Benda {
 
 /**
  Method konkrit
  */
 void bergerak(double jarak, double waktu){
  double kecepatan = jarak / waktu;
  System.out.println("Kecepatan adalah " + kecepatan);
 }
 
 /**
  Method abstract 1
  */
 abstract void tampilkanDetail();
 
 /**
  Method Abstract 2
  */
 abstract void berhenti();
 
}


7. Class abstract tidak dapat dibuat objeknya meskipun pada class yang tidak memiliki method abstract.

Contoh:

public abstract class Benda {
 
 /**
 Method abstract 1
 */
 abstract void bergerak();
 
 /**
 Method abstract 2
 */
 abstract void tampilkanDetail();
 
 /**
 Method Abstract 3
 */
 abstract void berhenti();
 
}

public class Test {
 
 public static void main(String[] args) {
  
  /**
  Class abstract tidak bisa dibuat objeknya
  */
  Benda benda = new Benda();
  
 }

}


8. Meskipun class abstract bisa memiliki method abstract dan konkrit di dalamnya, namun setiap class yang memiliki method abstract walaupun hanya satu saja, harus dinyatakan sebagai class abstract.

Namun, class abstract itu sendiri bisa saja tidak memiliki method abstract, contoh:

public abstract class Benda {
 
 /**
 Method konkrit
 */
 void bergerak(double jarak, double waktu){
  double kecepatan = jarak / waktu;
  System.out.println("Kecepatan adalah " + kecepatan);
 }
 
}


9. Setiap method yang tidak didefinisikan atau tidak diimplementasikan harus dideklarasikan sebagai method abstract.

Selain itu, class yang memiliki method tersebut juga harus didekalrasikan sebagai class abstract.

Contoh:

class Benda {
 
 /**
 Method konkrit
 */
 void bergerak(double jarak, double waktu){
  double kecepatan = jarak / waktu;
  System.out.println("Kecepatan adalah " + kecepatan);
 }
 
 /**
 Method abstract
 */
 abstract void bersuara();
 
}

Class Benda harus dinyatakan sebagai abstract karena memiliki method abstract bersuara() jika tidak akan menghasilkan compile time error.

10. Class dan method abstract dideklarasikan menggunakan keyword abstract dan objek dari class ini tidak bisa dibuat.

Namun, objek dari subclass-nya bisa dibuat asalkan harus menerapkan method abstract tersebut.

Contoh:

abstract class Benda {
 
 /**
 Method abstract
 */
 abstract void bersuara();
}


public class Gitar extends Benda {

 @Override
 void bersuara() {
  
 }
}

public class Test {
 
 public static void main(String[] args) {
  
  /**
  Benda benda = new Benda(); Ini tidak dapat dilakukan.
  Class Gitar mengiplementasikan method abstract
  sehingga objeknya bisa dibuat
  */
  Gitar gitar = new Gitar();
 }

}

Share on Facebook
Share on Twitter
Share on Google+

Artikel Menarik Lainnya :