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 Agen dan Broker

    Perbedaan antara Agen dan Broker

    Perbedaan utama: Agen mewakili perusahaan adalah setiap dan semua transaksi. Broker mewakili pelanggan berdasarkan per transaksi .. Baik agen maupun broker memiliki tanggung jawab untuk menyatukan pembeli dan penjual. Mereka bertindak sebagai perantara dan bertanggung jawab untuk memfasilitasi transaksi
  • perbandingan populer: Perbedaan antara Camcorder dan Handycam

    Perbedaan antara Camcorder dan Handycam

    Perbedaan Utama: Camcorder adalah frase singkat untuk 'perekam kamera'. Ini adalah perangkat portabel yang menangkap video dan audio. Handycam pada dasarnya adalah camcorder. Ini juga merupakan peralatan elektronik portabel untuk merekam video dan audio. Camcorder dan handycam adalah perangkat yang digunakan untuk tujuan yang sama
  • perbandingan populer: Perbedaan antara Padma Shri, Padma Bhushan dan Padma Vibhushan

    Perbedaan antara Padma Shri, Padma Bhushan dan Padma Vibhushan

    Perbedaan utama: Padma Vibhushan adalah penghargaan sipil tertinggi kedua di India. Padma Bhushan adalah penghargaan sipil tertinggi ketiga di India. Padma Shri adalah penghargaan sipil tertinggi keempat di India. Setiap negara memiliki set penghargaan sendiri yang dianugerahkan kepada warganya untuk unggul dalam bidang tertentu
  • perbandingan populer: Perbedaan antara Fonologi dan Semantik

    Perbedaan antara Fonologi dan Semantik

    Perbedaan utama: Fonologi berkaitan dengan studi suara dengan menentukan aturan suatu bahasa. Ini termasuk studi tentang distribusi dan pengucapan suara dalam pidato. Di sisi lain, Semantik adalah studi tentang makna dalam bahasa. Ini menganalisis makna yang berasal dari kata, frasa dan kalimat. Keduanya merupakan cabang penting linguistik
  • perbandingan populer: Perbedaan antara Air dan Air Berat

    Perbedaan antara Air dan Air Berat

    Perbedaan Kunci: Air adalah bahan kimia tersusun yang penting untuk hampir setiap bentuk kehidupan. Molekul air dibentuk oleh kombinasi dua atom hidrogen dan satu atom oksigen. Air berat juga air tetapi dengan pengecualian; itu mengandung lebih dari proporsi normal deuterium isotop hidrogen. Air adalah senyawa kimia yang penting untuk hampir setiap bentuk kehidupan
  • perbandingan populer: Perbedaan antara Seseorang dan Seseorang

    Perbedaan antara Seseorang dan Seseorang

    Perbedaan utama: 'Seseorang' dan 'seseorang' dapat dipertukarkan dalam banyak konteks. 'Seseorang' juga dianggap sedikit lebih eksklusif dan formal, sementara 'seseorang' terdengar agak informal. 'Seseorang' dapat merujuk seseorang yang akrab, sedangkan 'seseorang' sepertinya merujuk pada orang lain
  • perbandingan populer: Perbedaan antara LG Optimus L7 II Dual dan Micromax A116 Canvas HD

    Perbedaan antara LG Optimus L7 II Dual dan Micromax A116 Canvas HD

    Perbedaan utama: LG Optimus L7 II Dual adalah ponsel segmen menengah dari LG. Ponsel ini adalah ponsel dual SIM. Perangkat ini memiliki LCD IPS 4, 3 inci, layar sentuh kapasitif dengan resolusi 480 x 800 piksel. Ini berjalan pada Android v 4.1.2 (JellyBean), yang didukung oleh 1, 0 GHz Dual-Core Qualcomm MSM8225 Snapdragon prosesor dan 768 MB RAM
  • perbandingan populer: Perbedaan antara MacBook Pro dan MacBook Air

    Perbedaan antara MacBook Pro dan MacBook Air

    Perbedaan Utama: MacBook adalah merek komputer notebook Macintosh yang diproduksi oleh Apple Inc. MacBook Pro dianggap high-end dalam hal spesifikasi daripada MacBook Air. MacBook Pro adalah serangkaian komputer portabel oleh Apple Inc. Ini dianggap lebih unggul daripada MacBook Air dalam hal spesifikasi; dan MacBook Pro juga lebih mahal
  • perbandingan populer: Perbedaan antara Skydiving dan Bungee Jumping

    Perbedaan antara Skydiving dan Bungee Jumping

    Perbedaan utama: Keduanya, Skydiving dan Bungee Jumping adalah olahraga yang mendebarkan. Secara statistik ditemukan bahwa, Bungee Jumping lebih berbahaya dan berisiko daripada Skydiving. Dalam skydiving akrobat dilakukan, sedangkan di Bungee Jumping stunts tidak dilakukan. Skydiving (juga disebut sebagai terjun payung) adalah olahraga rekreasi atau kompetitif

Pilihan Editor

Perbedaan antara 3GP dan 3G2

Perbedaan utama: Baik 3GP dan 3G2 adalah format file yang terutama digunakan untuk memutar video dengan audio. Namun, apa yang kebanyakan orang tidak sadari bahwa 3GP dan 3G2 bukan format penyandian, tetapi file kontainer, yaitu pada dasarnya pembungkus untuk file video yang diformat. 3GP adalah format wadah multimedia terutama untuk layanan multimedia 3G UMTS