Akademi C# · Pelajaran

Antara muka (pengenalan) dan pelaksanaan berbilang antara muka

Takrifkan antara muka sebagai kontrak, laksanakan berbilang antara muka dalam satu kelas, gunakan polimorfisme berasaskan antara muka, dan pelajari asas pelaksanaan antara muka eksplisit.

Pelajaran 2 daripada 38 langkah

Antara muka (pengenalan) dan pelaksanaan berbilang antara muka ialah pelajaran Akademi C# percuma di CoddyKit. Ini ialah pelajaran 2 daripada 3. Anda boleh membaca keseluruhan pelajaran di bawah secara percuma — kemudian berlatih secara praktikal dalam pelayar menggunakan penyunting kod terbina dalam dan tutor kecerdasan buatan 24/7. Pelajaran ini merupakan sebahagian daripada laluan pembelajaran Akademi C#, dan kemajuan anda disegerakkan merentas web serta aplikasi CoddyKit. Kursus Akademi C# merangkumi sejumlah 3 pelajaran.

Gambaran keseluruhan antara muka

Matlamat: Atur cara kepada antara muka untuk kod yang fleksibel.

  • Antara muka mengisytiharkan apa, bukan caranya
  • Laksanakan berbilang antara muka
  • Hantar antara muka kepada fungsi
  • Pelaksanaan eksplisit untuk menyelesaikan pertindihan nama

Melaksanakan berbilang antara muka

Antara muka mentakrifkan kontrak. Satu kelas boleh melaksanakan berbilang antara muka untuk menyatakan peranan yang berbeza.

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 antara muka

Terima jenis antara muka dalam kaedah. Pemanggil boleh menghantar sebarang pelaksanaan.

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"));
  }
}

Pelaksanaan eksplisit

Pelaksanaan eksplisit membezakan ahli yang mempunyai nama sama dan menyembunyikannya daripada permukaan 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 antara muka

Simpan pelaksanaan yang berbeza dalam senarai jenis antara muka dan lelarinya 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
    }
  }
}

Petua antara muka

Petua:

  • Utamakan antara muka kecil yang menerangkan satu peranan.
  • Gunakan antara muka untuk ujian (tukar pelaksanaan).
  • Dalam C# 6, antara muka tidak mempunyai fields atau badan kaedah.
  • Laksanakan berbilang antara muka untuk menggabungkan tingkah laku.

Konsep antara muka

Semakan ringkas: Pernyataan manakah tentang antara muka dalam C# yang betul?

Imbas kembali

Imbas kembali: Antara muka ialah kontrak dan menyokong pelaksanaan berbilang bagi setiap kelas. Hantar antara muka kepada fungsi, pastikan antara muka kecil, dan gunakan pelaksanaan eksplisit untuk menyelesaikan konflik.

Percuma untuk bermula

Pelajari C# dengan tutor kecerdasan buatan — percuma

Tulis dan jalankan kod sebenar dalam pelayar anda, dapatkan bantuan segera daripada tutor kecerdasan buatan yang tersedia 24/7, dan sambung semula dari tempat anda berhenti di web atau dalam aplikasi.

Kursus
93
Pelajaran
346

Soalan Lazim

Adakah pelajaran “Antara muka (pengenalan) dan pelaksanaan berbilang antara muka” percuma?

Ya — teks penuh “Antara muka (pengenalan) dan pelaksanaan berbilang antara muka” boleh dibaca secara percuma di web ini. Untuk berlatih secara interaktif menggunakan penyunting kod terbina dalam dan tutor kecerdasan buatan 24/7, serta membuka kunci baki kursus Akademi C#, tingkat taraf kepada CoddyKit PRO. Kursus Akademi C# merangkumi sejumlah 3 pelajaran.

Apakah yang akan saya pelajari dalam “Antara muka (pengenalan) dan pelaksanaan berbilang antara muka”?

Takrifkan antara muka sebagai kontrak, laksanakan berbilang antara muka dalam satu kelas, gunakan polimorfisme berasaskan antara muka, dan pelajari asas pelaksanaan antara muka eksplisit. Anda berlatih Akademi C# menggunakan kod praktikal yang dijalankan terus dalam pelayar, manakala tutor kecerdasan buatan 24/7 menjawab soalan anda semasa anda mengikuti pelajaran.

Adakah saya memerlukan pengalaman untuk memulakan Akademi C#?

Tiada pengalaman terdahulu diperlukan. Pembelajaran Akademi C# di CoddyKit disusun untuk pelajar daripada peringkat pemula hingga lanjutan, jadi anda boleh bermula di sini atau dari awal dan belajar mengikut kadar anda sendiri. Ini ialah pelajaran 2 daripada 3.

Berapa lamakah pelajaran “Antara muka (pengenalan) dan pelaksanaan berbilang antara muka” diambil?

Kebanyakan pelajaran CoddyKit mengambil masa kira-kira 5–10 minit. Setiap pelajaran ringkas dan interaktif, jadi anda boleh membuat kemajuan secara berterusan dan menyambung tepat dari tempat anda berhenti di web atau aplikasi.

Bolehkah saya menulis dan menjalankan kod dalam pelajaran Akademi C# ini?

Ya. Setiap pelajaran Akademi C# menyertakan penyunting kod terbina dalam, jadi anda boleh menulis dan menjalankan kod sebenar terus dalam pelayar serta menerima maklum balas kecerdasan buatan serta-merta — tanpa memerlukan persediaan setempat.

Semua pelajaran dalam kursus ini

  1. virtual/override/sealed; kelas abstrak
  2. Antara muka (pengenalan) dan pelaksanaan berbilang antara muka
  3. Polimorfisme dan penghantaran dinamik
← Kembali ke Akademi C#