Perilaku polimorfik
Gunakan polimorfisme berbasis antarmuka: proses berbagai bentuk secara seragam, tambahkan bentuk baru tanpa mengubah pemanggil, dan susun perilaku-perilaku kecil.
Perilaku polimorfik adalah pelajaran C# Academy gratis di CoddyKit. Ini adalah pelajaran 3 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 polimorfisme
Tujuan: Menggunakan polimorfisme agar pemanggil tetap sederhana.
- Gunakan IShape di mana saja.
- Campurkan banyak bentuk dalam satu daftar.
- Tambahkan bentuk baru tanpa mengubah kode.
- Susun perilaku kecil (pemformatan, penyaringan).
Satu API untuk semua bentuk
Terima antarmuka IShape dalam pembantu. Pemanggilan saat runtime memilih implementasi yang tepat.
using System;
public interface IShape
{
double Area();
double Perimeter();
}
public sealed class Rectangle : IShape
{
private readonly double _w, _h;
public Rectangle(double w, double h) { _w = w; _h = h; }
public double Area() { return _w * _h; }
public double Perimeter() { return 2 * (_w + _h); }
}
public sealed class Circle : IShape
{
private readonly double _r;
public Circle(double r) { _r = r; }
public double Area() { return 3.14159 * _r * _r; }
public double Perimeter() { return 2 * 3.14159 * _r; }
}
public class Program
{
// One function works for any IShape (dynamic dispatch on overrides)
static void PrintSummary(IShape s)
{
Console.WriteLine("A=" + s.Area() + " P=" + s.Perimeter());
}
public static void Main(string[] args)
{
PrintSummary(new Rectangle(3, 4));
PrintSummary(new Circle(2));
}
}
Pemrosesan daftar campuran
Simpan banyak bentuk dalam List<IShape>. Iterasi tetap sederhana, sementara perilakunya berbeda untuk setiap instans.
using System;
using System.Collections.Generic;
public interface IShape { double Area(); double Perimeter(); }
public sealed class Rectangle : IShape
{
private readonly double _w, _h;
public Rectangle(double w, double h) { _w = w; _h = h; }
public double Area() { return _w * _h; }
public double Perimeter() { return 2 * (_w + _h); }
}
public sealed class Circle : IShape
{
private readonly double _r;
public Circle(double r) { _r = r; }
public double Area() { return 3.14159 * _r * _r; }
public double Perimeter() { return 2 * 3.14159 * _r; }
}
public class Program
{
public static void Main(string[] args)
{
List<IShape> shapes = new List<IShape>();
shapes.Add(new Rectangle(2, 5));
shapes.Add(new Circle(1.5));
shapes.Add(new Rectangle(1, 1));
foreach (IShape s in shapes)
{
Console.WriteLine("A=" + s.Area());
}
}
}
Terbuka untuk perluasan
Polimorfisme mendukung perluasan terbuka: bentuk baru dapat diintegrasikan tanpa mengedit pemanggil yang sudah ada.
using System;
public interface IShape { double Area(); double Perimeter(); }
public sealed class Triangle : IShape
{
private readonly double _a, _b, _c;
public Triangle(double a, double b, double c) { _a = a; _b = b; _c = c; }
public double Perimeter() { return _a + _b + _c; }
public double Area()
{
double s = (_a + _b + _c) / 2.0;
return Math.Sqrt(s * (s - _a) * (s - _b) * (s - _c));
}
}
public class Program
{
// Existing helper still works; no changes needed
static void Show(IShape s) { Console.WriteLine("A=" + s.Area() + " P=" + s.Perimeter()); }
public static void Main(string[] args)
{
Show(new Triangle(3, 4, 5)); // new type plugs in
}
}
Komposisi perilaku (strategi)
Susun perilaku kecil melalui antarmuka kecil (seperti pemformat). Tukar strategi tanpa mengubah bentuk.
using System;
public interface IShape { double Area(); double Perimeter(); }
public sealed class Rectangle : IShape
{
private readonly double _w, _h;
public Rectangle(double w, double h) { _w = w; _h = h; }
public double Area() { return _w * _h; }
public double Perimeter() { return 2 * (_w + _h); }
}
// Small strategy interface for formatting
public interface IShapeFormatter
{
string Format(IShape s);
}
public sealed class SimpleFormatter : IShapeFormatter
{
public string Format(IShape s) { return "A=" + s.Area() + " P=" + s.Perimeter(); }
}
public class Program
{
static void Print(IShape s, IShapeFormatter f)
{
Console.WriteLine(f.Format(s));
}
public static void Main(string[] args)
{
Print(new Rectangle(3, 2), new SimpleFormatter());
}
}
Kiat polimorfisme
Kiat:
- Teruskan IShape ke pembantu; hindari pemeriksaan tipe.
- Buat pembantu tetap kecil dan murni jika memungkinkan.
- Tambahkan bentuk baru dengan bebas; jangan mengedit pemanggil yang sudah ada.
- Gunakan antarmuka perilaku kecil (pemformatan, penyaringan) untuk memperluas fitur.
Manfaat antarmuka
Ringkasan
Ringkasan: Gunakan parameter bertipe IShape, proses daftar campuran, dan tambahkan bentuk tanpa menyentuh pemanggil. Susun perilaku kecil untuk pemformatan atau penyaringan agar kode tetap fleksibel.
Pertanyaan yang Sering Diajukan
Apakah pelajaran “Perilaku polimorfik” gratis?
Ya — teks lengkap “Perilaku polimorfik” 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 “Perilaku polimorfik”?
Gunakan polimorfisme berbasis antarmuka: proses berbagai bentuk secara seragam, tambahkan bentuk baru tanpa mengubah pemanggil, dan susun perilaku-perilaku kecil. 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 3 dari 3.
Berapa lama pelajaran “Perilaku polimorfik” 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
- Rancangan (antarmuka dan pewarisan)
- Implementasi dan pengujian
- Perilaku polimorfik