Antarmuka (pengantar) dan implementasi beberapa antarmuka
Definisikan antarmuka sebagai kontrak, implementasikan beberapa antarmuka dalam satu kelas, gunakan polimorfisme berbasis antarmuka, dan pelajari dasar implementasi antarmuka eksplisit.
Antarmuka (pengantar) dan implementasi beberapa antarmuka adalah pelajaran C# Academy gratis di CoddyKit. Ini adalah pelajaran 2 dari 3. Kamu bisa membaca pelajaran lengkapnya di bawah secara gratis — lalu praktikkan langsung di browser dengan editor kode bawaan dan tutor AI 24/7. Ini adalah bagian dari jalur belajar C# Academy, dan progresmu tersinkronisasi di web dan aplikasi CoddyKit. Kursus C# Academy mencakup 3 pelajaran total.
Ikhtisar antarmuka
Tujuan: Memprogram berdasarkan antarmuka untuk menghasilkan kode yang fleksibel.
- Antarmuka menyatakan apa, bukan bagaimana caranya
- Implementasikan beberapa antarmuka
- Teruskan antarmuka ke fungsi
- Implementasi eksplisit untuk mengatasi benturan nama
Mengimplementasikan beberapa antarmuka
Antarmuka mendefinisikan kontrak. Satu kelas dapat mengimplementasikan beberapa antarmuka untuk menyatakan peran yang berbeda.
using System;
public interface IPlayable
{
void Play();
}
public interface IHasDuration
{
int DurationSeconds { get; }
}
public class Song : IPlayable, IHasDuration
{
private readonly string _title;
private readonly int _seconds;
public Song(string title, int seconds)
{
_title = title;
_seconds = seconds;
}
public int DurationSeconds { get { return _seconds; } }
public void Play()
{
Console.WriteLine("Playing " + _title + " (" + _seconds + "s)");
}
}
public class Program
{
public static void Main(string[] args)
{
Song s = new Song("Hello", 5);
s.Play();
Console.WriteLine("Duration = " + s.DurationSeconds);
}
}
Polimorfisme antarmuka
Terima tipe antarmuka dalam metode. Pemanggil dapat meneruskan implementasi apa pun.
using System;
public interface IPrintable
{
void Print();
}
public class Report : IPrintable
{
private readonly string _text;
public Report(string text) { _text = text; }
public void Print() { Console.WriteLine("Report: " + _text); }
}
public class Label : IPrintable
{
private readonly string _text;
public Label(string text) { _text = text; }
public void Print() { Console.WriteLine("Label: " + _text); }
}
public class Program
{
// Works with any IPrintable (polymorphism)
static void PrintAll(IPrintable item)
{
item.Print();
}
public static void Main(string[] args)
{
PrintAll(new Report("Sales Q1"));
PrintAll(new Label("Fragile"));
}
}
Implementasi eksplisit
Implementasi eksplisit membedakan anggota dengan nama sama dan menyembunyikannya dari tampilan kelas.
using System;
public interface ILogger { void Write(string msg); }
public interface IFileWriter { void Write(string msg); }
public class DualWriter : ILogger, IFileWriter
{
// Explicit implementations: only visible via the interface reference
void ILogger.Write(string msg) { Console.WriteLine("[LOG] " + msg); }
void IFileWriter.Write(string msg) { Console.WriteLine("[FILE] " + msg); }
public void Demo()
{
Console.WriteLine("DualWriter ready");
}
}
public class Program
{
public static void Main(string[] args)
{
DualWriter dw = new DualWriter();
dw.Demo();
ILogger log = dw;
IFileWriter file = dw;
log.Write("started");
file.Write("saved");
}
}
Koleksi antarmuka
Simpan implementasi yang berbeda dalam daftar bertipe antarmuka dan lakukan iterasi secara seragam.
using System;
using System.Collections.Generic;
public interface ITask
{
void Run();
}
public class EmailTask : ITask
{
public void Run() { Console.WriteLine("Send email"); }
}
public class BackupTask : ITask
{
public void Run() { Console.WriteLine("Run backup"); }
}
public class Program
{
public static void Main(string[] args)
{
List<ITask> tasks = new List<ITask>();
tasks.Add(new EmailTask());
tasks.Add(new BackupTask());
foreach (ITask t in tasks)
{
t.Run(); // calls the right implementation
}
}
}
Kiat antarmuka
Kiat:
- Utamakan antarmuka kecil yang menjelaskan satu peran.
- Gunakan antarmuka untuk pengujian (ganti implementasi).
- Dalam C# 6, antarmuka tidak memiliki fields atau method bodies.
- Implementasikan beberapa antarmuka untuk menyusun perilaku.
Konsep antarmuka
Ringkasan
Ringkasan: Antarmuka adalah kontrak dan mendukung implementasi beberapa antarmuka per kelas. Teruskan antarmuka ke fungsi, buat tetap kecil, dan gunakan implementasi eksplisit untuk mengatasi konflik.
Pertanyaan yang Sering Diajukan
Apakah pelajaran “Antarmuka (pengantar) dan implementasi beberapa antarmuka” gratis?
Ya — teks lengkap “Antarmuka (pengantar) dan implementasi beberapa antarmuka” gratis dibaca di sini di web. Untuk praktiknya secara interaktif (editor kode bawaan dan tutor AI 24/7) dan buka sisa kursus C# Academy, upgrade ke CoddyKit PRO. Kursus C# Academy mencakup 3 pelajaran total.
Apa yang akan aku pelajari di “Antarmuka (pengantar) dan implementasi beberapa antarmuka”?
Definisikan antarmuka sebagai kontrak, implementasikan beberapa antarmuka dalam satu kelas, gunakan polimorfisme berbasis antarmuka, dan pelajari dasar implementasi antarmuka eksplisit. Kamu berlatih C# Academy dengan kode praktik yang langsung kamu jalankan di browser, dan tutor AI 24/7 menjawab pertanyaanmu saat kamu mengerjakan pelajaran ini.
Apakah aku perlu pengalaman untuk memulai C# Academy?
Tidak diperlukan pengalaman sebelumnya. C# Academy di CoddyKit dirancang untuk pemula hingga pelajar tingkat lanjut, jadi kamu bisa memulai di sini atau dari awal dan belajar sesuai kecepatan kamu sendiri. Ini adalah pelajaran 2 dari 3.
Berapa lama pelajaran “Antarmuka (pengantar) dan implementasi beberapa antarmuka” memakan waktu?
Sebagian besar pelajaran CoddyKit memakan waktu sekitar 5–10 menit. Setiap pelajaran ringkas dan interaktif, jadi kamu membuat kemajuan stabil dan melanjutkan dari tempat kamu tinggalkan di web dan aplikasi.
Bisakah aku menulis dan menjalankan kode dalam pelajaran C# Academy ini?
Ya. Setiap pelajaran C# Academy menyertakan editor kode bawaan, jadi kamu menulis dan menjalankan kode nyata langsung di browser dan mendapatkan umpan balik AI instan — tidak diperlukan penyiapan lokal.
Semua pelajaran dalam kursus ini
- virtual/override/sealed; kelas abstrak
- Antarmuka (pengantar) dan implementasi beberapa antarmuka
- Polimorfisme dan pengiriman dinamis