virtual/override/sealed; kelas abstrak
Pelajari metode virtual, overriding, penyegelan override, dan kelas abstrak; lihat cara referensi dasar memilih implementasi turunan secara dinamis.
virtual/override/sealed; kelas abstrak adalah pelajaran C# Academy gratis di CoddyKit. Ini adalah pelajaran 1 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.
Dasar-dasar pewarisan
Tujuan: Menggunakan kembali dan menyesuaikan perilaku melalui pewarisan.
- virtual di kelas dasar
- override di kelas turunan
- sealed override untuk menghentikan perubahan lebih lanjut
- abstract class mendefinisikan kontrak serta kode bersama
virtual dan override
virtual memungkinkan penggantian. Pemanggilan melalui reference dasar menggunakan override turunan (pemanggilan dinamis).
using System;
// Base method is virtual so derived classes can customize it
public class Shape
{
public virtual double Area()
{
return 0.0; // default
}
}
public class Rectangle : Shape
{
public int Width { get; private set; }
public int Height { get; private set; }
public Rectangle(int w, int h)
{
Width = w; Height = h;
}
public override double Area()
{
return Width * Height;
}
}
public class Program
{
public static void Main(string[] args)
{
Shape s = new Shape();
Shape r = new Rectangle(3, 4); // base reference
Console.WriteLine("Shape area = " + s.Area());
Console.WriteLine("Rectangle area = " + r.Area()); // calls Rectangle.Area()
}
}
sealed override
Gunakan sealed override untuk mengunci metode pada tingkat tertentu dalam hierarki.
using System;
public class BaseLogger
{
public virtual string Prefix()
{
return "[LOG]";
}
}
public class ConsoleLogger : BaseLogger
{
public sealed override string Prefix()
{
return "[CONSOLE]";
}
}
// Further derived class cannot override Prefix again:
// public class FancyLogger : ConsoleLogger
// {
// public override string Prefix() { return "[FANCY]"; } // compile error
// }
public class Program
{
public static void Main(string[] args)
{
ConsoleLogger log = new ConsoleLogger();
Console.WriteLine(log.Prefix() + " Ready");
}
}
Kelas abstrak
Kelas abstract mendefinisikan anggota yang diperlukan (abstrak) dan juga dapat menyediakan kode bersama.
using System;
// Abstract class: cannot be instantiated; must implement abstract members
public abstract class Animal
{
public abstract string Speak(); // no body here
public string Info()
{
return "Animal says: " + Speak(); // shared code uses the abstract member
}
}
public class Dog : Animal
{
public override string Speak()
{
return "Woof";
}
}
public class Program
{
public static void Main(string[] args)
{
// Animal a = new Animal(); // compile error: abstract
Animal d = new Dog();
Console.WriteLine(d.Info()); // calls Dog.Speak()
}
}
virtual dibandingkan dengan abstract
Pilih:
- virtual: sediakan isi bawaan yang dapat diganti oleh tipe turunan.
- abstract: tanpa isi; tipe turunan harus mengimplementasikannya.
- sealed override: hentikan penggantian lebih lanjut setelah perilaku ditetapkan.
Pemanggilan polimorfik
Polimorfisme: sebuah metode menerima tipe dasar dan memanggil anggota yang diganti pada instans turunan.
using System;
public class Notifier
{
public virtual string Channel() { return "Base"; }
}
public class EmailNotifier : Notifier
{
public override string Channel() { return "Email"; }
}
public class SmsNotifier : Notifier
{
public override string Channel() { return "SMS"; }
}
public class Program
{
// Works with any Notifier (polymorphism)
static void Send(Notifier n, string msg)
{
Console.WriteLine("[" + n.Channel() + "] " + msg);
}
public static void Main(string[] args)
{
Send(new EmailNotifier(), "Hello");
Send(new SmsNotifier(), "Hi");
}
}
Aturan virtual/override/sealed
Ringkasan
Ringkasan: Tandai metode dasar dengan virtual, lakukan override pada tipe turunan, dan gunakan sealed override untuk mengunci perilaku. Gunakan abstract classes untuk mewajibkan implementasi sambil berbagi kode umum.
Pertanyaan yang Sering Diajukan
Apakah pelajaran “virtual/override/sealed; kelas abstrak” gratis?
Ya — teks lengkap “virtual/override/sealed; kelas abstrak” 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 “virtual/override/sealed; kelas abstrak”?
Pelajari metode virtual, overriding, penyegelan override, dan kelas abstrak; lihat cara referensi dasar memilih implementasi turunan secara dinamis. 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 1 dari 3.
Berapa lama pelajaran “virtual/override/sealed; kelas abstrak” 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