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 AGP Bus dan PCI Bus

    Perbedaan antara AGP Bus dan PCI Bus

    Perbedaan Utama: AGP (Accelerated Graphics Port) dan bus PCI (Peripheral Component Interconnect) didasarkan pada dua teknologi yang berbeda dalam menghubungkan kartu ekspansi ke komputer. AGP tidak dianggap sebagai bus karena terhubung ke hanya satu perangkat. Namun, itu bisa disebut sebagai antarmuka
  • perbandingan populer: Perbedaan antara Kacamata Pria dan Wanita

    Perbedaan antara Kacamata Pria dan Wanita

    Perbedaan utama: Kacamata hitam merupakan kebutuhan kasual dan informal baik untuk pakaian pria maupun wanita. Sebenarnya, ditemukan bahwa, kacamata hitam wanita lebih menarik dan berwarna dibandingkan dengan kacamata pria. Baik pria maupun wanita lebih memilih kacamata hitam sebagai ikon gaya dan juga untuk melindungi mata terutama selama musim panas
  • perbandingan populer: Perbedaan antara Beasiswa dan Bantuan Keuangan

    Perbedaan antara Beasiswa dan Bantuan Keuangan

    Perbedaan utama: Bantuan keuangan adalah untuk memberikan dukungan kepada orang yang layak atau penyebab dalam hal moneter sedangkan beasiswa adalah bentuk bantuan keuangan yang diberikan kepada siswa untuk membantu mereka membayar pendidikan mereka. Bantuan keuangan mencakup beasiswa, hibah, dan pinjaman
  • perbandingan populer: Perbedaan antara Samsung Galaxy Win dan Sony Xperia J

    Perbedaan antara Samsung Galaxy Win dan Sony Xperia J

    Perbedaan utama: Samsung Galaxy Win adalah ponsel lain dari Samsung Corporation. Samsung Galaxy Win hadir dalam dua varian: Single-SIM dan Dual-SIM. Samsung Galaxy Win juga dijual sebagai Samsung Galaxy Grand Quattro di pasar tertentu. Ponsel ini adalah smartphone quad-core yang ditujukan untuk segmen anggaran
  • perbandingan populer: Perbedaan antara SLR dan Kamera DSLR

    Perbedaan antara SLR dan Kamera DSLR

    Perbedaan Kunci: SLR adalah kamera yang memiliki sistem cermin bergerak otomatis yang dengannya seseorang dapat menangkap gambar tertentu. Cermin yang bergerak memanipulasi, mengoperasikan, dan mengontrol cahaya yang jatuh pada cermin. DSLR, kependekan dari, Digital Single-Lens Reflex, adalah bentuk lanjutan dari kamera digital
  • perbandingan populer: Perbedaan antara Susu Skim dan Susu Kencang

    Perbedaan antara Susu Skim dan Susu Kencang

    Perbedaan utama: 'Susu skim' adalah susu dari mana krim telah dihilangkan. Prosesnya berlangsung untuk menghilangkan lemak dari susu. Di sisi lain, ' Susu kental' adalah campuran susu bubuk skim dan air dalam susu kerbau utuh untuk mengurangi lemak. Susu adalah minuman terpenting yang harus diminum setiap hari
  • perbandingan populer: Perbedaan antara Ubi Jalar dan Ubi

    Perbedaan antara Ubi Jalar dan Ubi

    Perbedaan utama : 'ubi jalar' dan 'ubi jalar' terkenal sebagai makanan kesehatan terbaik. Keduanya menawarkan manfaat kesehatan yang berbeda dan penggunaan kuliner yang berbeda, dan masing-masing sayuran menghasilkan profilnya yang benar-benar unik dan berbeda. Istilah 'Ubi Jalar' dan 'Ubi' digunakan secara bergantian, dan dianggap sama
  • perbandingan populer: Perbedaan antara Stevia, Truvia dan Purevia

    Perbedaan antara Stevia, Truvia dan Purevia

    Perbedaan utama: Stevia adalah semak abadi yang memiliki daun yang rasanya manis. Ini pada dasarnya adalah tanaman Amerika Selatan yang milik keluarga Krisan. Truvia adalah pemanis meja dan bahan makanan berbasis stevia dari Coca Cola dan Cargill. Purevia adalah pemanis meja dan bahan makanan berbasis stevia oleh PepsiCo dan Merisant
  • perbandingan populer: Perbedaan antara Nama Keluarga dan Nama Keluarga

    Perbedaan antara Nama Keluarga dan Nama Keluarga

    Perbedaan Utama: Nama keluarga adalah bagian penting dari nama pribadi. Nama keluarga adalah nama yang dibagikan seseorang dengan anggota keluarga lainnya. Umumnya diturunkan dari satu generasi ke generasi lainnya. Nama keluarga juga mengacu pada nama keluarga. Karena itu, tidak ada perbedaan di antara mereka

Pilihan Editor

Perbedaan antara Samsung Galaxy S4 Active dan HTC One X +

Perbedaan Utama: Samsung mengumumkan bahwa mereka telah menambahkan telepon baru ke jajarannya yang menggabungkan kekasaran dari Samsung Xcover yang lebih tua dengan fitur dan semangat Galaxy S4 yang baru. S4 Active tahan debu dan air. Ponsel ini dilengkapi dengan layar sentuh kapasitif TFT 5 inci Full HD yang berbeda dari AMOLED yang digunakan dalam S4