Perbedaan antara Antarmuka dan Kelas Abstrak di Jawa

Perbedaan Utama: Antarmuka atau protokol adalah cara umum yang memungkinkan objek yang tidak terkait untuk berkomunikasi satu sama lain. Ini mewakili perilaku yang disepakati yang memfasilitasi interaksi antara dua objek. Kelas abstrak adalah kelas objek yang tidak bisa dipakai atau membuat instance objek. Kelas ini mungkin tidak memiliki implementasi atau dapat memiliki implementasi yang tidak lengkap.

Java, C ++, C # adalah semua bahasa pemrograman yang rumit yang membutuhkan studi dan pemahaman terperinci untuk dapat bekerja dengannya. Ada banyak metode berbeda yang digunakan dalam bahasa-bahasa ini yang memutuskan bagaimana bahasa akan bekerja. Antarmuka dan Kelas Abstrak adalah dua konsep membingungkan yang merupakan bagian dari OOP (pemrograman berorientasi objek). Keduanya dapat digunakan secara individual atau bersama-sama. Keduanya sangat berbeda satu sama lain dan digunakan dalam kasus yang berbeda.

Java adalah bahasa pemrograman, yang telah dipengaruhi oleh bahasa C. Ini banyak mengambil sintaksnya dari C dan C ++, namun memiliki lebih sedikit fasilitas tingkat rendah daripada keduanya. Java adalah bahasa pemrograman untuk tujuan umum yang dirancang untuk memiliki lebih sedikit ketergantungan implementasi dibandingkan dengan bahasa sebelumnya. Ini adalah bahasa bersamaan, berbasis kelas, dan berorientasi objek.

Java dikembangkan oleh James Gosling di Sun Microsystems dan dirilis pada 1995. Awalnya dirilis sebagai komponen inti platform Java Sun Microsystems. Sun sejak itu telah melisensikan ulang sebagian besar teknologi Java di bawah GNU General Public License. Ini berarti bahwa semua teknologi yang dilisensikan di bawah GNU General Public License adalah open source dan umumnya tersedia tanpa biaya. Sun Microsystems akhirnya bergabung ke Oracle Corporation. Pada 2012, Java telah menjadi salah satu bahasa pemrograman paling populer untuk digunakan. Ini terutama berlaku untuk aplikasi web client-server. Banyak sistem lain telah mengembangkan implementasi alternatif teknologi Sun, seperti GNU Compiler untuk Java dan GNU Classpath.

Antarmuka atau protokol adalah cara umum yang memungkinkan objek yang tidak terkait untuk berkomunikasi satu sama lain. Ini mewakili perilaku yang disepakati yang memfasilitasi interaksi antara dua objek. Antarmuka memegang kunci untuk berbagai tindakan yang sedang dilaksanakan dan berfungsi sebagai penghubung antara dua objek yang berbeda. Jika kelas objek terkena antarmuka, kelas harus mengikuti perilaku yang diterapkan oleh antarmuka. Biasanya, antarmuka hanya berisi deklarasi konstan dan tanda tangan metode. Setiap antarmuka yang mengimplementasikan antarmuka tertentu, harus menerapkan semua metode yang disebutkan dalam antarmuka atau dinyatakan sebagai kelas abstrak. Di Jawa, objek apa pun dapat didefinisikan sebagai antarmuka, jika objek itu nol atau memegang kelas di mana ia mengimplementasikan antarmuka tertentu. Seseorang dapat mengimplementasikan banyak antarmuka ke satu kelas di Jawa menggunakan kata kunci implement.

Kelas abstrak adalah kelas objek yang tidak bisa dipakai atau membuat instance objek. Kelas ini mungkin tidak memiliki implementasi atau dapat memiliki implementasi yang tidak lengkap. Itu juga dapat memiliki metode atau properti abstrak yang dibagikan oleh semua sub-kelas. Dalam beberapa bahasa pemrograman, tipe abstrak tanpa implementasi dikenal sebagai antarmuka. Di Jawa, tipe abstrak dapat dibuat menggunakan kata kunci 'abstrak' dalam definisi kelas. Tujuan memiliki kelas abstrak untuk menempatkan semua metode yang tidak diimplementasikan dalam kelas abstrak dan menyerahkannya ke subclass untuk menentukan bagaimana menerapkan kelas-kelas ini. Jika suatu kelas memiliki metode abstrak tunggal, kelas tersebut harus dinyatakan sebagai kelas abstrak, walaupun seseorang tidak perlu memiliki setidaknya satu metode tunggal untuk mendeklarasikan abstrak kelas.

Malliktalksjava.in mencantumkan perbedaan utama antara antarmuka dan abstrak sebagai:

  • Kelas abstrak memiliki konstruktor, tetapi antarmuka tidak.
  • Kelas abstrak dapat memiliki implementasi untuk beberapa anggotanya (Metode), tetapi antarmuka tidak dapat memiliki implementasi untuk salah satu anggotanya.
  • Kelas abstrak harus memiliki subclass lain yang tidak akan berguna.
  • Antarmuka harus memiliki implementasi oleh kelas lain yang tidak akan berguna
  • Hanya antarmuka yang dapat memperluas antarmuka lain, tetapi setiap kelas dapat memperluas kelas abstrak.
  • Semua variabel dalam antarmuka bersifat final secara default
  • Antarmuka menyediakan bentuk pewarisan berganda. Suatu kelas hanya dapat memperpanjang satu kelas lainnya.
  • Antarmuka terbatas pada metode dan konstanta publik tanpa implementasi. Kelas abstrak dapat memiliki implementasi parsial, bagian yang dilindungi, metode statis, dll.
  • Kelas A dapat mengimplementasikan beberapa antarmuka. Tetapi dalam kasus kelas abstrak, suatu kelas hanya dapat memperpanjang satu kelas abstrak.
  • Antarmuka lambat karena memerlukan tipuan ekstra untuk menemukan metode yang sesuai di kelas yang sebenarnya. Kelas abstrak cepat.
  • Pengubah aksesibilitas (Publik / Pribadi / internal) diizinkan untuk kelas abstrak. Antarmuka tidak memungkinkan pengubah aksesibilitas
  • Kelas abstrak dapat berisi metode lengkap atau tidak lengkap. Antarmuka hanya dapat berisi tanda tangan dari suatu metode tetapi tidak ada tubuh. Dengan demikian kelas abstrak dapat mengimplementasikan metode tetapi antarmuka tidak dapat mengimplementasikan metode.
  • Kelas abstrak dapat berisi bidang, konstruktor, atau destruktor dan mengimplementasikan properti. Antarmuka tidak dapat berisi bidang, konstruktor, atau destruktor dan hanya memiliki tanda tangan properti tetapi tidak ada implementasi.
  • Berbagai pengubah akses seperti abstrak, dilindungi, internal, publik, virtual, dll. Berguna dalam Kelas abstrak tetapi tidak di antarmuka.
  • Ruang lingkup abstrak hingga kelas turunan.
  • Lingkup antarmuka hingga tingkat rantai pewarisannya.

Informasi untuk tabel ini adalah milik codeproject.com dan mindprod.com

Antarmuka

Kelas Abstrak

Warisan berganda

Sebuah kelas dapat mewarisi beberapa antarmuka.

Suatu kelas dapat mewarisi hanya satu kelas abstrak.

Implementasi default

Antarmuka tidak dapat memberikan kode apa pun, hanya tanda tangan.

Kelas abstrak dapat memberikan kode lengkap, default, dan / atau hanya detail yang harus diganti.

Akses Pengubah

Antarmuka tidak dapat memiliki pengubah akses untuk subs, fungsi, properti, dll semuanya dianggap publik.

Kelas abstrak dapat berisi pengubah akses untuk subs, fungsi, properti.

Inti vs Periferal

Antarmuka digunakan untuk menentukan kemampuan periferal suatu kelas. Dengan kata lain baik Manusia dan Kendaraan dapat mewarisi dari antarmuka IMovable.

Kelas abstrak mendefinisikan identitas inti dari sebuah kelas dan di sana ia digunakan untuk objek-objek dengan tipe yang sama.

Kehomogenan

Jika berbagai implementasi hanya membagikan tanda tangan metode maka lebih baik menggunakan Antarmuka.

Jika berbagai implementasi dari jenis yang sama dan menggunakan perilaku atau status umum maka kelas abstrak lebih baik untuk digunakan.

Kecepatan

Membutuhkan lebih banyak waktu untuk menemukan metode aktual di kelas yang sesuai.

Cepat

Menambahkan fungsionalitas

Jika kita menambahkan metode baru ke Antarmuka maka kita harus melacak semua implementasi antarmuka dan menentukan implementasi untuk metode baru.

Jika kita menambahkan metode baru ke kelas abstrak maka kita memiliki opsi untuk menyediakan implementasi default dan oleh karena itu semua kode yang ada dapat berfungsi dengan baik.

Fields dan Konstanta

Tidak ada bidang yang dapat didefinisikan dalam antarmuka.

Kelas abstrak dapat memiliki bidang dan konstanta yang didefinisikan.

Kesakitan

Deklarasi konstan dalam suatu antarmuka semuanya dianggap final statis publik.

Kode bersama dapat ditambahkan ke dalam kelas abstrak.

Konstanta

Hanya konstanta akhir statis, dapat menggunakannya tanpa kualifikasi di kelas yang mengimplementasikan antarmuka.

Konstanta instance dan statis keduanya dimungkinkan. Kedua kode intialiser statis dan instance juga dimungkinkan untuk menghitung konstanta.

Kenyamanan Pihak Ketiga

Implementasi antarmuka dapat ditambahkan ke kelas pihak ketiga yang ada.

Kelas pihak ketiga harus ditulis ulang untuk memperluas hanya dari kelas abstrak.

is-a vs -able atau can-do

Antarmuka sering digunakan untuk menggambarkan kemampuan periferal suatu kelas, bukan identitas pusatnya, misalnya kelas Automobile mungkin mengimplementasikan antarmuka yang dapat didaur ulang, yang dapat berlaku untuk banyak objek yang sama sekali tidak terkait.

Kelas abstrak mendefinisikan identitas inti dari keturunannya. Antarmuka yang diterapkan menyebutkan hal-hal umum yang dapat dilakukan kelas, bukan hal-hal yang dilakukan kelas.

Dalam konteks Java, pengguna biasanya harus mengimplementasikan antarmuka Runnable daripada memperluas Thread, karena mereka tidak benar-benar tertarik untuk menyediakan beberapa fungsionalitas Thread baru, mereka biasanya hanya ingin beberapa kode memiliki kemampuan berjalan secara mandiri. Mereka ingin membuat sesuatu yang dapat dijalankan di utas, bukan utas baru. Perdebatan serupa adalah-lawan vs memiliki-muncul ketika Anda memutuskan untuk mewarisi atau mendelegasikan.

Plug-in

Pengguna dapat menulis modul pengganti baru untuk antarmuka yang tidak berisi satu batang kode yang sama dengan implementasi yang ada. Ketika pengguna mengimplementasikan antarmuka, mereka mulai dari awal tanpa implementasi standar apa pun. Pengguna harus mendapatkan alat dari kelas lain; tidak ada yang hadir dengan antarmuka selain beberapa konstanta. Ini memberikan kebebasan pengguna untuk menerapkan desain internal yang sangat berbeda.

Pengguna harus menggunakan kelas abstrak apa adanya untuk basis kode, dengan semua bawaannya, baik atau buruk. Penulis kelas abstrak telah memberlakukan struktur pada pengguna.

Pemeliharaan

Jika kode klien berbicara hanya dalam hal antarmuka, Anda dapat dengan mudah mengubah implementasi konkret di belakangnya, menggunakan metode pabrik.

Jika kode klien berbicara hanya dalam hal kelas abstrak, Anda dapat dengan mudah mengubah implementasi konkret di belakangnya, menggunakan metode pabrik.

Direkomendasikan

Artikel Yang Berhubungan

  • perbandingan populer: Perbedaan antara Federasi dan Federalis

    Perbedaan antara Federasi dan Federalis

    Perbedaan utama: Federasi adalah penyatuan beberapa organisasi politik; sedangkan, seorang federalis adalah anggota atau pendukung Partai Federalis. Istilah federasi berarti membentuk negara atau organisasi menjadi satu kelompok dengan kontrol atau kekuasaan terpusat. Dapat juga dikatakan sebagai kelompok negara dengan pemerintah pusat, tetapi independen dalam urusan internal mereka
  • perbandingan populer: Perbedaan antara Sekuler dan Liberal

    Perbedaan antara Sekuler dan Liberal

    Perbedaan utama : Sekuler berarti tidak memiliki kedekatan agama. Liberal berarti memiliki pandangan sosial dan politik yang mendukung kemajuan dan reformasi. Liberal berarti memiliki pandangan yang mendukung kebebasan politik. Itu adalah ideologi politik. Ini adalah seluruh rangkaian cita-cita. Demokrasi liberal adalah bentuk pemerintahan yang didasarkan pada aturan mayoritas terbatas
  • perbandingan populer: Perbedaan antara Baterai NiMH dan mAh

    Perbedaan antara Baterai NiMH dan mAh

    Perbedaan utama: NiMH adalah jenis baterai yang dapat diisi ulang. mAh adalah perhitungan energi yang dapat disampaikan oleh baterai. NiMH dan mAh keduanya istilah yang paling sering digunakan dengan baterai, khususnya baterai isi ulang. Baterai yang dapat diisi ulang telah menjadi alternatif yang sangat ekonomis untuk menggunakan baterai sekali pakai standar, karena dapat diisi ulang hingga 1000 kali sebelum perlu diganti
  • perbandingan populer: Perbedaan antara Bunga dan Kuncup

    Perbedaan antara Bunga dan Kuncup

    Perbedaan utama: Bunga mengacu pada bagian tanaman yang mengandung organ reproduksi. Itu sering dikelilingi oleh kelopak dan sepal berwarna-warni. Tunas mengacu pada tahap dasar daun dan bunga. Ini terjadi sebagai tambahan kecil atau terminal tonjolan (batang) pada tanaman. Bunga adalah bagian dari tanaman yang umumnya mengandung organ reproduksi
  • perbandingan populer: Perbedaan antara Dosa dan Imoralitas

    Perbedaan antara Dosa dan Imoralitas

    Perbedaan utama: Dosa adalah konsep yang paling umum dikaitkan dengan agama, sedangkan amoralitas mengacu pada tindakan yang umumnya dianggap tidak bermoral, yaitu tindakan yang dianggap salah secara moral dan / atau secara etis salah. Keduanya dianggap perilaku yang salah dan umumnya disukai. Dosa dan amoralitas adalah istilah yang sama-sama merujuk pada pelanggaran yang disukai kita dalam masyarakat
  • perbandingan populer: Perbedaan antara Cappuccino dan Latte

    Perbedaan antara Cappuccino dan Latte

    Perbedaan utama : Cappuccino dan Latte adalah dua jenis minuman kopi populer yang dikonsumsi oleh orang-orang di seluruh dunia. Perbedaan utama antara cappuccino dan latte didasarkan pada komponen masing-masing dan persiapan. Cappuccino dan latte adalah dua minuman kopi Italia paling populer. Keduanya disiapkan menggunakan susu, gula, dan biji kopi
  • perbandingan populer: Perbedaan antara Power Steering dan Electronic Power Steering

    Perbedaan antara Power Steering dan Electronic Power Steering

    Perbedaan Utama: Power steering adalah sistem yang membantu dalam menyetir roda dengan menggunakan beberapa jaringan daya tambahan. Electronic power steering juga merupakan sistem power steering yang menggunakan motor listrik dan unit kontrol dengan beberapa sensor. Power steering adalah sistem yang membantu kemudi menggunakan sumber tenaga
  • perbandingan populer: Perbedaan antara Varchar dan Varchar2

    Perbedaan antara Varchar dan Varchar2

    Perbedaan utama: Varchar dan Varchar2 adalah dua tipe data di Oracle. Varchar adalah singkatan dari string karakter panjang variabel. Mereka digunakan untuk menyimpan string. Varchar2 dapat menyimpan string karakter panjang variabel dengan batas atas 4000 byte. Varchar sama dengan Varchar2. Namun, telah dijadwalkan untuk didefinisikan ulang di masa depan, dan karenanya tidak direkomendasikan untuk menggunakan tipe data Varchar dalam skenario saat ini
  • perbandingan populer: Perbedaan antara Kutil dan Jerawat

    Perbedaan antara Kutil dan Jerawat

    Perbedaan Kunci: Kutil adalah pertumbuhan kasar yang muncul paling umum di tangan dan jari atau di telapak kaki. Mereka juga dapat muncul di bagian lain dari tubuh seperti wajah, lengan atau kaki dan kadang-kadang tumbuh di daerah genital atau anal. Jerawat adalah bentuk umum dari jerawat dan ditandai dengan lesi yang berisi nanah yang meradang yang umumnya berwarna merah di bagian dasarnya

Pilihan Editor

Perbedaan antara Pria dan Wanita

Perbedaan utama: Pria dikatakan lebih cocok untuk beberapa tugas daripada wanita dan sebaliknya. Inilah sebabnya mengapa peran gender tradisional menentukan bahwa laki-laki cocok untuk karier seperti politik dan sains, sementara tempat perempuan dikatakan dalam rumah tangga. Sementara, ini tidak sepenuhnya terjadi, ada beberapa kebenaran dalam masalah ini