Home » Java » Abstract Class Vs Interface Java

Abstract Class Vs Interface Java

by Wahyu Saputra S.Kom
by Wahyu Saputra S.Kom

Para developer menganggap Java sebagai salah satu bahasa pemrograman paling populer. Terlepas dari banyaknya alternatif bahasa pemrograman terbaik yang digunakan, stabilitas dan popularitas Java menjadi jaminan bahwa bahasa tersebut akan menjadi bagian integral dari pengembangan aplikasi selama beberapa tahun kedepan dan yang akan datang.

Programmer dan pengembang yang ingin memanfaatkan kelebihan dari fungsionalitas Java harus meningkatkan pemahaman mereka tentang bahasa dan apa saja yang dapat dilakukand dengan bahasa pemrograman Java. Untuk itu, kita akan membahas tentang metode abstraksi Java. Artikel ini akan membantu Kita memahami perbedaan antara abstract class vs interface Java, yang menjadi dua bagian utama dalam pengembangan aplikasi menggunakan bahasa pemrograman Java.

Sebelum kita melihat bagaimana perbedaan antara abstract class dan interface Java, mari kita lihat terlebih dahulu bagaimana definisi diantara keduanya.

Apa itu Abstract Class di Java ?

Abstract class didefinisikan sebagai kelas yang dinyatakan dengan kata kunci “abstract”. Ini adalah kumpulan karakteristik subkelas umum yang harus mencakup setidaknya satu metode abstract. Kelas abstract dapat memiliki beberapa metode concrete. Programmer yang menggunakan Java 8 dan yang lebih baru juga dapat menggabungkan metode default dan statis.

Kelas abstract tidak dapat diinisiasi, yang berarti Kita tidak dapat membuat objek dengannya.

Programmer menggunakan abstract class Java ketika mereka membutuhkan :

  • Fungsionalitas default untuk subkelas
  • Template untuk kelas tertentu di masa mendatang
  • Menentukan interface umum untuk subkelas apa pun
  • Reusabilitas kode

Apa itu Interface di Java ?

Interface adalah blue print yang digunakan untuk mengimplementasikan kelas. Ini adalah kumpulan metode abstract dan tidak mengandung metode concrete, tidak seperti kelas abstract. Namun, interface menawarkan abstraksi penuh di Java, sesuatu yang tidak dapat dilakukan kelas abstract.

Seperti kelas, interface dapat berisi metode dan variabel, meskipun metode yang dideklarasikan default ke abstract.

Interface tidak dapat diinisiasi, meskipun kelas abstract yang mengimplementasikan interface dapat melakukannya.

Programmer menggunakan interface saat mereka membutuhkan :

  • Untuk mencapai abstraksi
  • Untuk mendukung resolusi yang dinamis saat proses run time
  • Mencapai loose coupling
  • Memisahkan definisi metode dari hierarki inheritance

Abstract Class vs. Interface Java

Berikut ada perbandingan dan perbedaan antara Abstract Class dan Interface di Java

 ParameterAbstract ClassInterface
Modifikasi AksesDapat memiliki akses modifikasiTidak memiliki akses modifikasi, dan semua yang didefinisikan di dalamnya diasumsikan sebagai modifikasi publik
KonstruktorDapat mendeklarasikan konstruktor dan destruktorTidak dapat mendeklarasikan konstruktor atau destruktor
Data FieldMemiliki Data FieldTidak memiliki Data Field
Aksesibilitas Member DataDapat memiliki semua jenis kelas member (misalnya, publik, private, proteksi)Hanya dapat memiliki member publik, secara default
Definisi FieldPengguna dapat mendifinisikan field dan konstantaTidak dapat mendefinisikan field
Limitasi EkstensiHanya memperluas satu kelas atau satu kelas abstract sekaligus. Dapat memperluas kelas reguler (atau concrete) lainnya.Dapat memperluas sejumlah interface. Namun, itu hanya dapat memperluas interface.
Kecepatan ImplementasiLebih cepat dari interfaceInterface lebih lambat dan memerlukan intinuasi atau dereferensi ekstra
InisiasiTidak dapat diinisiasi, tetapi dapat dipanggil jika ada main ()Tidak dapat diinisiasi, karena benar-benar abstract
Penggunaan KeywordKata kunci abstract digunakan untuk mendeklarasikan kelas abstract. Juga, kelas abstract dapat diperluas dengan menggunakan kata kunci “extend”Kata kunci interface yang digunakan untuk mendeklarasikan interface. Juga, interface dapat diimplementasikan dengan menggunakan kata kunci “implement”
MetodeDapat memiliki metode abstract dan non-abstract. Dapat memiliki implementasi metode defaultHanya dapat memiliki metode abstract, meskipun karena Java 8 dan juga dapat memiliki metode statis dan default. Tidak dapat memiliki implementasi karena interface menyediakan abstraksi murni
Multiple InheritanceHanya dapat memiliki satu kelas abstractDapat mengimplementasikan beberapa interface
StrukturMetode abstract sajaMetode abstract dan concrete
Tipe VariabelDapat memiliki variabel final, non-final, statis, dan non-statisHanya dapat memiliki variabel final dan statis
Kapan Sebaiknya DigunakanDigunakan saat beberapa implementasi dari jenis yang sama berbagi perilaku umum, Selain itu, dapat digunakan jika Kita memerlukan kelas dasar.Paling baik digunakan ketika berbagai implementasi hanya berbagi signature metode. Juga, dapat menjadi pilihan yang baik ketika kelas Kita membutuhkan perilaku tambahan atau injeksi

You may also like