Eksplorasi implementasi antarmuka bawaan
Implementasi antarmuka default memungkinkan Anda menambahkan metode baru langsung ke antarmuka dan memberikan implementasi default. Kelas yang menggunakan antarmuka ini, dapat menggunakan metode default, atau dapat mengambil alih dan memberikan implementasinya sendiri.
Implementasi standar
Implementasi default dalam antarmuka memungkinkan Anda menambahkan metode baru ke antarmuka tanpa menyebabkan masalah.
- Antarmuka dapat menyediakan isi untuk metodenya menggunakan implementasi default.
- Kelas yang menggunakan antarmuka tidak perlu menulis versi metode ini sendiri.
- Fitur ini membantu ketika Anda ingin mengubah antarmuka tanpa merusak apa pun.
Nota
Bahkan dengan implementasi default, kelas tidak secara otomatis mendapatkan metode antarmuka. Untuk menggunakan metode dari antarmuka, variabel harus dari jenis antarmuka.
Keuntungan
Implementasi default dalam antarmuka memiliki beberapa manfaat:
- Penggunaan kembali kode: Anda dapat berbagi fungsi umum di berbagai implementasi tanpa menyalin kode.
- Kompatibilitas mundur: Anda dapat menambahkan metode baru ke antarmuka tanpa mengubah semua kelas yang menggunakan antarmuka untuk mencegah perubahan yang merusak.
- Fleksibilitas: Kelas yang menggunakan antarmuka dapat mengubah implementasi default jika membutuhkan perilaku yang berbeda.
Misalnya, Anda bekerja dengan sistem manajemen pelanggan dan Anda menambahkan metode baru untuk menerapkan diskon loyalitas di antarmuka yang ada. Metode default menghitung diskon dasar. Tetapi jika kelas "pelanggan VIP" membutuhkan perhitungan yang berbeda, kelas ini dapat memodifikasi metode ini.
Menentukan implementasi default
Sintaks untuk menentukan implementasi default dalam antarmuka memperluas deklarasi antarmuka untuk menyertakan isi metode. Contoh berikut mendefinisikan implementasi default dalam antarmuka berdasarkan skenario sistem manajemen pelanggan:
interface ICustomer
{
int CustomerId { get; set; } // No default implementation
void ApplyLoyaltyDiscount()
{
// default implementation
Console.WriteLine("Applying 10% loyalty discount.");
}
}
Dalam contoh ini, ApplyLoyaltyDiscount metode memiliki implementasi default dalam ICustomer antarmuka. Properti CustomerId juga didefinisikan dalam antarmuka tetapi tidak memiliki implementasi default.
Nota
Dari C# 8.0 dan seterusnya, antarmuka dapat menyertakan implementasi metode default. Perubahan ini memungkinkan metode baru ditambahkan ke antarmuka tanpa merusak kode yang ada. Kelas dapat menggunakan default ini atau memberikan implementasinya sendiri.
Selanjutnya, terapkan kelas "VIPCustomer" yang membutuhkan perhitungan diskon yang berbeda. Kelas ini dapat mengimplementasikan antarmuka ICustomer, menyediakan implementasinya sendiri untuk properti CustomerId, dan menimpa metode ApplyLoyaltyDiscount dengan cara seperti ini:
class VIPCustomer : ICustomer
{
public int CustomerId { get; set; } // Implementing property from interface
void ICustomer.ApplyLoyaltyDiscount()
{
// override default implementation for VIP customers
Console.WriteLine($"Applying 20% loyalty discount for VIP customer with ID {CustomerId}.");
}
}
Dalam kasus ini, kelas VIPCustomer menerapkan diskon 20% sebagai ganti dari diskon bawaan 10%.
CustomerId digunakan dalam pesan saat menerapkan diskon.
Implementasi default dalam antarmuka memungkinkan penambahan metode baru dengan implementasi metode yang disediakan dalam antarmuka. Implementasi default mempromosikan penggunaan kembali kode, kompatibilitas mundur, dan fleksibilitas. Ini adalah alat praktis dalam Pemrograman Object-Oriented C# yang meningkatkan kemampuan beradaptasi tanpa mengganggu kode yang ada.