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 Metabolisme, Katabolisme dan Anabolisme

    Perbedaan antara Metabolisme, Katabolisme dan Anabolisme

    Perbedaan utama: Metabolisme mengacu pada reaksi bio-kimia yang terjadi dalam suatu organisme. Reaksi ini penting untuk mempertahankan hidup. Ini terdiri dari dua proses - Katabolisme dan Anabolisme. Katabolisme berkaitan dengan pemecahan molekul yang lebih besar menjadi molekul yang lebih kecil. Ini biasanya proses pelepasan energi
  • perbandingan populer: Perbedaan antara Nokia Lumia 928 dan Sony Xperia ZL

    Perbedaan antara Nokia Lumia 928 dan Sony Xperia ZL

    Perbedaan Utama: Nokia baru-baru ini mengumumkan telepon baru untuk line-up-nya; Lumia 928. Telepon ini dilengkapi dengan layar kapasitif AMOLED 4, 5 inci dengan bezel belakang lebar. Ponsel ini cukup tebal dan berat, dibandingkan dengan smartphone baru lainnya yang berfokus pada semakin tipis dan ringan
  • perbandingan populer: Perbedaan antara AWD dan 4WD

    Perbedaan antara AWD dan 4WD

    Perbedaan utama : Perbedaan antara kedua sistem penggerak didasarkan pada penggunaan keempat roda mobil. Dalam sistem 4WD, pengemudi memiliki opsi untuk memberi daya dan menggunakan keempat roda atau hanya dua roda dalam suatu sistem, sedangkan dalam sistem AWD, proses mengemudi dilangsungkan secara permanen dan pengemudi tidak memiliki opsi untuk melepaskan sistem
  • perbandingan populer: Perbedaan antara Prinsipal dan Prinsip

    Perbedaan antara Prinsipal dan Prinsip

    Perbedaan utama: Kata-kata ' Prinsipal ' dan ' Prinsip ' diucapkan dengan cara yang sama, tetapi memiliki arti yang berbeda. Istilah ' pelaku' mencerminkan kepentingan utama, atau sebagai memiliki otoritas utama, sedangkan istilah ' prinsip' mencerminkan kebenaran mendasar, atau proposisi dasar utama untuk suatu sistem atau teori
  • perbandingan populer: Perbedaan antara Maruti Suzuki Alto 800 dan Hyundai Eon

    Perbedaan antara Maruti Suzuki Alto 800 dan Hyundai Eon

    Perbedaan utama: Maruti Suzuki Alto 800 dan Hyundai Eon, keduanya adalah mobil kecil yang dimaksudkan untuk dikendarai di kota. Namun, Eon memiliki lebih banyak fitur dan penampilan yang cukup baik sebagai mobil entry level Hyundai. Alto pertama kali diperkenalkan pada 1979 dan sejak itu, ada banyak perubahan dalam versi, varian, dan modelnya
  • perbandingan populer: Perbedaan antara Skydiving dan Jatuh Bebas

    Perbedaan antara Skydiving dan Jatuh Bebas

    Perbedaan utama: Skydiving adalah tindakan melakukan akrobat selama terjun bebas, diikuti oleh penyebaran parasut; sedangkan, Jatuh Bebas melibatkan gerakan benda apa pun di mana gravitasi adalah satu-satunya kekuatan dominan. Andre Jacques Garnerin memprakarsai kegiatan Skydiving pada awal 1797. Dia melompat dari balon udara panas dengan parasut dan memprakarsai seni skydiving modern
  • perbandingan populer: Perbedaan antara Arkeolog dan Geolog

    Perbedaan antara Arkeolog dan Geolog

    Perbedaan utama: Para arkeolog pada dasarnya mempelajari tentang masyarakat manusia, terutama melalui pemulihan dan analisis materi yang mereka tinggalkan. Ahli geologi pada dasarnya berkaitan dengan penelitian tentang sejarah Bumi. Para arkeolog terutama mempelajari tentang masa lalu dan masa kini manusia, melalui bahan-bahan yang telah ditinggalkan manusia
  • perbandingan populer: Perbedaan antara Lucifer dan Setan

    Perbedaan antara Lucifer dan Setan

    Perbedaan utama: Lucifer adalah malaikat yang jatuh yang diusir dari surga ketika dia memberontak melawan Allah. Setelah Perang di Surga, yang hilang dari Lusifer, ia diusir dari surga. Setelah ini ia dikenal sebagai "Setan", dan menjadi iblis. Dia datang untuk mempersonifikasikan kejahatan dan pencobaan
  • perbandingan populer: Perbedaan antara TFT dan Plasma

    Perbedaan antara TFT dan Plasma

    Perbedaan Utama: TFT (Thin-film transistor) adalah jenis semikonduktor yang digunakan dalam panel liquid crystal display (LCD), sedangkan display plasma dikembangkan menggunakan gas mulia yang dipanaskan secara elektrik untuk menghasilkan cahaya. Plasma adalah pilihan yang lebih baik dalam memproduksi layar yang lebih besar dari 40 inci, LCD TFT menjadi lebih mahal untuk diproduksi

Pilihan Editor

Perbedaan antara Oven Konvensional dan Oven Pemanggang Roti

Perbedaan utama: Oven konvensional pada dasarnya adalah oven yang menggunakan gas, kayu atau listrik untuk listrik. Ini adalah oven yang sering kita temukan di banyak rumah yang digunakan untuk memasak. Oven pemanggang adalah oven yang merupakan oven listrik kecil yang memiliki pintu depan, rak kawat yang dapat dilepas dan loyang yang bisa dilepas