Menu Close

Perbedaan antara kelas abstrak dan antarmuka dalam C# (dengan tabel)

Perbedaan antara kelas abstrak dan antarmuka dalam C# (dengan tabel)

Saat merancang aplikasi atau memulai karir pemrograman, perlu diketahui perbedaan antara Kelas Abstrak dan Antarmuka di C#. Baik kelas abstrak maupun antarmuka digunakan untuk mencapai abstraksi di mana metode abstrak dapat dipahami. Meskipun Anda tidak dapat menggunakan keduanya secara bersamaan.

Kelas dan antarmuka abstrak mungkin terlihat serupa dalam beberapa hal, tetapi ada perbedaan utama yang membantu menentukan opsi terbaik bagi seseorang untuk mencapai tujuan pemrograman tertentu.

Seseorang seharusnya tidak pernah bermaksud untuk menggunakan kelas abstrak secara langsung. Kelas ini harus memiliki setidaknya satu metode abstrak. Dan itu akan ditandai dengan kata kunci abstrak atau pengubah dalam definisi kelas. Di sisi lain, antarmuka hanya memungkinkan seseorang untuk menentukan fungsionalitasnya. Itu tidak bisa dilaksanakan. Meskipun sebuah kelas hanya dapat mengembangkan satu kelas abstrak, ia juga dapat memanfaatkan banyak antarmuka.

Kelas abstrak vs antarmuka di C #

Perbedaan antara kelas abstrak dan antarmuka di C # adalah bahwa fungsi “utama” dari kelas abstrak adalah untuk menjelaskan identitas kelas yang sebenarnya, sedangkan fungsi utama antarmuka adalah untuk menjelaskan kemungkinan eksternal dari suatu kelas. Warisan berganda tidak dimungkinkan dalam kelas abstrak, sementara antarmuka dapat menghasilkan banyak warisan sebanyak mungkin. Kelas abstrak tidak menyediakan abstraksi lengkap, sedangkan antarmuka dapat memberikan abstraksi lengkap.

Tabel perbandingan antara kelas abstrak dan antarmuka di C#

Bandingkan parameter antarmuka kelas abstrak di C#

Kegunaan

Menambahkan metode baru ke kelas abstrak akan memberi Anda opsi untuk menyediakan implementasi default dan oleh karena itu semua kode Anda saat ini akan bekerja dengan benar.

Menambahkan metode baru ke antarmuka akan memungkinkan Anda melacak semua implementasi antarmuka dan menentukan implementasi metode terkini.

berbagai warisan

Sebuah kelas hanya dapat mewarisi satu kelas abstrak

Beberapa antarmuka dapat diwariskan oleh sebuah kelas.

Yang berisi?

Kelas abstrak berisi anggota data dan konstruktor

Antarmuka dalam C# tidak mengandung anggota data atau konstruktor

Menyediakan

Kelas abstrak dapat memberikan kode default lengkap dan/atau detail untuk diganti.

Antarmuka di C# tidak mampu memberikan kode apa pun, hanya tanda tangan

laju pergerakan

Kelas abstrak cepat dalam hal kecepatan.

Antarmuka di C# membutuhkan lebih banyak waktu untuk mendapatkan metode aktual di kelas terkait

Apa itu kelas abstrak di C#?

Kelas abstrak adalah sesuatu yang hanya bisa berpura-pura menjadi kelas dasar untuk kelas lain. Mereka adalah kelas yang memiliki satu atau lebih metode abstrak. Metode abstrak dikenal sebagai metode yang diiklankan, tetapi tidak mengandung implementasi apa pun.

Untuk membuat kelas, kita perlu menggunakan pengubah ‘abstrak’. Pengubah ini menunjukkan bahwa mungkin ada beberapa implementasi yang hilang yang perlu dilakukan di kelas yang diekstraksi. Anggota abstrak dan non-abstrak dapat dimuat dalam kelas abstrak.

Kelas abstrak ini harus memiliki setidaknya satu metode abstrak yang sudah dibahas di atas. Tanpa metode, kita tidak dapat mendeklarasikan kelas tersebut sebagai “abstrak”.

Kadang-kadang kelas abstrak tidak dapat dipakai dan membutuhkan subkelas untuk menyediakan implementasi untuk metode abstrak. Jika kita membuat kelas abstrak, maka kita membuat kelas dasar yang dapat berisi satu atau lebih metode yang sudah selesai, tetapi setidaknya kita akan menemukan satu atau lebih metode yang belum selesai dan dinyatakan abstrak.

Jika semua metode kelas abstrak tetap tidak lengkap, itu akan seperti antarmuka. Memberikan definisi kelas dasar tentang bagaimana satu set kelas turunan akan bekerja dan kemudian membiarkan pemrogram mengisi implementasi di kelas turunan adalah tujuan sebenarnya dari kelas abstrak.

Kita juga dapat mengatakan bahwa tujuan dari kelas abstrak adalah untuk memberikan definisi kelas dasar.

Apa itu antarmuka dalam C#?

Di sisi lain, antarmuka bukanlah kelas yang hanya memiliki indikasi fungsionalitas. Kita bisa menyebutnya pola tanpa implementasi. Secara teoritis, itu hanya definisi metode yang memiliki deklarasi anggota.

Kita bisa menganggapnya sebagai sebuah shell kosong yang tidak mengandung implementasi anggotanya. Antarmukanya seperti kelas dasar abstrak yang hanya akan memiliki anggota abstrak seperti metode, pengindeks, peristiwa, properti, dll.

Itu tidak dapat diinstansiasi secara langsung dan anggotanya dapat diimplementasikan oleh kelas apa pun. Juga, sebuah kelas dapat mengimplementasikan banyak antarmuka, namun sebuah kelas hanya bisa mendapatkan satu kelas. Dengan kata lain, kita dapat mengatakan bahwa antarmuka hanya memiliki deklarasi anggota dan tidak berisi implementasi dari anggota tersebut.

Kelas mengimplementasikan antarmuka dan harus memberikan definisi metode yang ditetapkan pada antarmuka. Yang berarti bahwa antarmuka membawa struktur standar yang harus diikuti oleh kelas turunan.

Perbedaan utama antara kelas abstrak dan antarmuka di C#

  1. Kelas abstrak dikenal sebagai jenis kelas tertentu yang dapat berisi penjelasan tanpa implementasi. Di sisi lain, antarmuka hanyalah pola yang tidak mampu melakukan apa pun. Jadi, secara teknis, itu hanya cangkang yang kosong.
  2. Sebuah kelas hanya dapat menggunakan satu kelas abstrak, oleh karena itu lebih dari satu pewarisan tidak didukung. Di sisi lain, sebuah warisan dapat mendukung banyak warisan, yang berarti bahwa sebuah kelas dapat mewarisi sejumlah warisan.
  3. Kelas abstrak dapat berisi beberapa pengubah akses seperti subs, fungsi, properti, dll. Sedangkan antarmuka tidak dapat berisi pengubah akses dan semua metode pasti harus didefinisikan sebagai publik.
  4. Kelas abstrak cenderung bertindak sebagai kelas dasar untuk semua kelas lain, sehingga dapat mendeklarasikan atau menggunakan variabel apa pun sementara antarmuka tidak dapat mendeklarasikan apa pun.
  5. Kelas abstrak cenderung menggunakan dirinya sendiri untuk menentukan identitas utama kelas dan dapat digunakan untuk objek dengan tipe tanggal yang serupa. Dan antarmuka digunakan untuk menentukan kemampuan periferal suatu kelas.

Pertanyaan yang Sering Diajukan (FAQ) tentang kelas abstrak dan antarmuka di C#

Apa gunanya kelas abstrak di C #?

C # adalah bahasa pemrograman berorientasi objek tujuan umum. Ini dari Microsoft. Tujuan utama C# adalah menggunakan daya komputasi C++ dengan kemudahan pemrograman Virtual Basic.
Ini terutama didasarkan pada C ++ dan juga berisi fitur-fitur seperti Java.

Kelas abstrak adalah salah satu cara untuk mencapai abstraksi dalam C# dan tidak dapat dibuat instance-nya secara langsung. Fungsi kelas abstrak adalah untuk membuat beberapa fungsionalitas atau membuat perilaku umum yang dapat diwariskan, diimplementasikan, atau ditimpa oleh subkelas.

Pada dasarnya, ini menyediakan model untuk kelas turunan dan memberikan instruksi tentang apa yang diterapkan kelas turunan ketika mereka mewarisi kelas abstrak.

Apa antarmuka di C # dan mengapa itu digunakan?

Antarmuka dalam C# dapat didefinisikan sebagai definisi tipe seperti kelas. Tapi itu hanya memberikan deklarasi dan diwarisi oleh kelas dan struct.

Ini digunakan dengan kelas untuk mendefinisikan kontrak (kesepakatan tentang apa yang disediakan kelas untuk aplikasi). Deklarasikan saja metode dan properti yang berbeda dan kelas akan menentukan apa yang sebenarnya dilakukan metode tersebut.

Itu tidak dapat dipakai sebagai objek dan hanya digunakan sebagai kumpulan deklarasi metode dan properti. Mendefinisikan operasi apa yang dapat atau akan dilakukan oleh kelas.

Apa itu polimorfisme dalam C #?

Polimorfisme biasanya dinyatakan sebagai antarmuka dan beberapa fitur. Polimorfisme dalam C# berarti memberikan kemampuan untuk mengambil berbagai bentuk. Setelah enkapsulasi dan pewarisan, ini adalah konsep pilar lain dari pemrograman berorientasi objek. C# menyediakan kemampuan bagi kelas untuk mengimplementasikan metode berbeda yang biasanya disebut dengan nama yang sama.

Ada dua jenis polimorfisme di C #:

  1. Kompilasi Polimorfisme Waktu – Berarti mendefinisikan beberapa metode dengan parameter berbeda tetapi nama yang sama. Itu memungkinkan kita untuk menggunakan nama metode yang sama untuk melakukan banyak tugas hanya dengan melewati parameter yang berbeda.
  2. Polimorfisme runtime – Berarti membuat fungsi serupa di kelas turunan untuk mengganti metode kelas dasar. Dalam metode ini, kita dapat membuat metode dengan nama dan parameter yang sama untuk melakukan tugas yang berbeda.

Kesimpulan

Memahami perbedaan antara keduanya adalah tugas yang cukup sulit. Kami dapat menggabungkan semua informasi yang dapat kami temukan dan itu masih belum cukup. Secara teoritis, keduanya adalah istilah terpenting dalam pemrograman dan sangat mirip, tetapi dalam hal fungsionalitas, keduanya sangat berbeda.

Sementara kelas abstrak adalah tipe kelas tertentu yang akan berfungsi sebagai basis untuk kelas lain, antarmuka hanya akan berupa shell kosong dengan hanya deklarasi anggota.

Referensi

  1. https://csharp.net-tutorials.com/classes/abstract-classes/
  2. https://dl.acm.org/doi/abs/10.1145/512035.512041

Cobalah kuis TI