Menu Close

Perbedaan antara Kelas Abstrak dan Antarmuka Di Java

Di Java, ada dua cara utama untuk membuat kelas: abstrak dan non-abstrak. Antarmuka mirip dengan kelas abstrak, tetapi tidak dapat memiliki metode konkret. Artikel ini akan membahas perbedaan antara kelas abstrak dan antarmuka di Java.

Apa itu Kelas Abstrak Di Jawa?

Kelas abstrak adalah bagian penting dari Java, dan digunakan dalam berbagai cara. Kelas abstrak memungkinkan Anda membuat kerangka kelas, yang nantinya dapat disempurnakan oleh subkelas konkret. Ini berguna saat Anda ingin menyediakan kelas basis umum untuk sekelompok kelas terkait, tetapi detail penerapannya akan berbeda di antara subkelas.

Kelas abstrak juga dapat digunakan untuk mendefinisikan antarmuka, yang menentukan perilaku yang harus diterapkan oleh kelas. Namun, tidak seperti kelas konkret, kelas abstrak tidak dapat dibuat instance-nya. Ini berarti Anda tidak dapat membuat objek dari tipe kelas abstrak. Sebagai gantinya, Anda harus membuat objek dari subkelas konkret yang memperluas kelas abstrak. Kelas abstrak adalah bagian penting dari pemrograman Java, dan memberikan banyak fleksibilitas dalam hal penggunaan kembali kode dan modularitas.

Apa itu Antarmuka Di Jawa?

Antarmuka Di Java adalah cetak biru dari kelas yang memiliki konstanta statis dan metode abstrak. Ini digunakan untuk mencapai abstraksi dan pewarisan berganda di Jawa. Antarmuka juga mewakili hubungan IS-A. Itu tidak bisa dipakai seperti kelas abstrak. Namun, sebuah Antarmuka dapat diimplementasikan dengan menggunakan kata kunci “implements.” Kelas dapat mengimplementasikan lebih dari satu Antarmuka sekaligus. Antarmuka hanya memiliki variabel statis dan final.

  • Antarmuka digunakan untuk mencapai kopling longgar sehingga program dapat bekerja bersama tanpa terlalu bergantung pada detail implementasi satu sama lain. Antarmuka menyediakan abstraksi penuh; karenanya, semua metode di Antarmuka harus diimplementasikan di kelas anak. Antarmuka lambat karena memerlukan tipuan ekstra untuk setiap pemanggilan metode.
    Ini meningkatkan jumlah supertipe kelas. Oleh karena itu, lebih sulit untuk memahami kode karena memiliki terlalu banyak ketergantungan pada kelas lain. Dalam skenario dunia nyata, Antarmuka digunakan di berbagai tempat seperti driver JDBC, objek Pendengar, dll.
  • Antarmuka juga digunakan dalam kelas Adaptor atau kelas Pembungkus di mana banyak antarmuka diimplementasikan oleh satu kelas untuk memberikan konten yang diakses melalui satu antarmuka ke dunia luar sambil menyembunyikan detail implementasi aktual dari mereka. Antarmuka banyak digunakan dalam bahasa pemrograman Java dan memainkan peran penting dalam ekosistemnya.

Perbedaan antara Kelas Abstrak dan Antarmuka Di Jawa

Kelas Abstrak dan Antarmuka Di Java keduanya digunakan untuk mencapai abstraksi di mana kita dapat mendeklarasikan metode abstrak yang umum untuk semua kelas. Kelas abstrak adalah kelas yang dideklarasikan menggunakan kata kunci abstrak. Metode abstrak adalah metode yang dideklarasikan di Kelas Abstrak tetapi tidak diimplementasikan di dalamnya, yaitu metode ini harus diimplementasikan oleh subkelas konkret.

  • Jadi, kelas Abstrak dapat memiliki metode abstrak dan non-abstrak. Antarmuka juga digunakan untuk mencapai abstraksi di mana kita dapat mendeklarasikan metode abstrak yang umum untuk semua kelas. Antarmuka dideklarasikan menggunakan kata kunci antarmuka. Metode abstrak dalam Antarmuka bersifat publik dan final secara implisit, yaitu, kita tidak dapat mengubah pengubah akses dari metode abstrak dalam Antarmuka.
  • Kelas apa pun yang mengimplementasikan Antarmuka harus mengimplementasikan semua metode Abstrak dari antarmuka itu, jika tidak, kelas tersebut harus dideklarasikan sebagai kelas Abstrak. Kelas abstrak dapat memiliki variabel statis, final, dan non-final sedangkan Antarmuka tidak dapat memiliki variabel apa pun kecuali konstanta (yang harus dideklarasikan sebagai statis dan final). Kelas dapat mengimplementasikan lebih dari satu Antarmuka tetapi hanya dapat memperluas satu kelas Abstrak.
  • Jika sebuah kelas mengimplementasikan sebuah antarmuka maka tidak perlu untuk mengimplementasikan semua metode antarmuka itu tetapi jika itu memperluas kelas Abstrak maka ia harus mengimplementasikan semua metode abstrak dari kelas Abstrak itu. Kelas Abstrak dapat memiliki konstruktor sedangkan Antarmuka tidak dapat memiliki konstruktor. Kelas Abstrak tidak mendukung banyak warisan tetapi Antarmuka mendukung banyak warisan.

Kita tidak bisa membuat instance kelas Abstrak tetapi kita bisa membuat objek dengan menggunakan referensi Antarmuka (upcasting). Singkatnya, kita dapat mengatakan bahwa Kelas Abstrak adalah cetak biru untuk sekelompok kelas serupa dengan beberapa fungsi umum, sedangkan Antarmuka adalah cetak biru untuk kelas dengan hierarki yang sama sekali berbeda yang memiliki beberapa fungsi yang sama.

Kesimpulan

Di Java, kelas abstrak dapat berupa superclass dan antarmuka. Antarmuka tidak bisa menjadi superclass. Kelas abstrak berguna saat Anda ingin menerapkan beberapa fungsi tetapi tidak ingin klien membuat objek dari kelas tersebut. Antarmuka berguna ketika Anda ingin banyak kelas berbagi perilaku umum tanpa mensubklasifikasikan kelas induk yang sama berulang kali.