Polymorphism, nesne yönelimli programlama (OOP) paradigmasının önemli bir kavramıdır. C# Polymorphism nedir? Polymorphism, Yunanca “çok biçimlilik” anlamına gelir ve bir nesnenin farklı şekillerde davranabilmesini sağlar. Polymorphism sayesinde, aynı isme sahip farklı sınıflardan türetilmiş nesneler, aynı arayüzü kullanarak farklı işlevler gerçekleştirebilirler. Bu, kodun yeniden kullanılabilirliğini, esnekliğini ve bakımını kolaylaştırır.
C# dilinde Polymorphism, soyut sınıflar, sanal metotlar ve geçersiz kılma (override) mekanizması ile sağlanır. Soyut sınıflar, diğer sınıfların kalıtım alabileceği ama kendisinden nesne oluşturulamayan sınıflardır. Soyut sınıfların içinde soyut metotlar tanımlanabilir. Soyut metotlar, gövdesi olmayan ve türetilen sınıflarda uygulanması zorunlu olan metotlardır. Sanal metotlar ise gövdesi olan ama türetilen sınıflarda isteğe bağlı olarak geçersiz kılınabilen metotlardır. Geçersiz kılma ise, türetilen sınıfta aynı imzaya sahip bir metodu yeniden tanımlayarak, temel sınıftaki davranışını değiştirmektir.
Polymorphismin nasıl çalıştığını görmek için basit bir örnek yapalım. Bir Hayvan soyut sınıfı tanımlayalım ve içine bir SesCikar soyut metodu ekleyelim. Sonra bu sınıftan Kedi ve Kopek sınıflarını türetelim ve SesCikar metodunu geçersiz kılalım. Son olarak da bir Hayvan dizisi oluşturup içine farklı türden nesneler atayalım ve döngü ile SesCikar metodunu çağıralım.
//Soyut Hayvan sınıfı
abstract class Hayvan {
//Soyut SesCikar metodu
public abstract void SesCikar();
}
//Hayvan sınıfından türetilen Kedi sınıfı
class Kedi : Hayvan {
//SesCikar metodunu geçersiz kılıyoruz
public override void SesCikar() {
Console.WriteLine("Miyav");
}
}
//Hayvan sınıfından türetilen Kopek sınıfı
class Kopek : Hayvan {
//SesCikar metodunu geçersiz kılıyoruz
public override void SesCikar() {
Console.WriteLine("Hav");
}
}
//Ana program
class Program {
static void Main(string[] args) {
//Hayvan tipinde bir dizi oluşturuyoruz
Hayvan[] hayvanlar = new Hayvan[2];
//Diziye farklı türden nesneler atıyoruz
hayvanlar[0] = new Kedi();
hayvanlar[1] = new Kopek();
//Döngü ile dizideki her nesnenin SesCikar metodunu çağırıyoruz
foreach (Hayvan h in hayvanlar) {
h.SesCikar();
}
//Çıktı:
//Miyav
//Hav
}
}
Bu örnekte görüldüğü gibi, aynı isme sahip SesCikar metodu, farklı türden nesneler için farklı çıktılar verdi. Bu, Polymorphismin gücünü gösterir. Polymorphismsayesinde, kodumuzu daha genel ve soyut hale getirebilir, farklı durumlara uyum sağlayabilir ve daha kolay yönetebiliriz.
Bu yazıda C#’ta Polymorphism konusunu anlattım. Umarım faydalı olmuştur. Polymorphism ile ilgili daha fazla bilgi için https://docs.microsoft.com/tr-tr/dotnet/csharp/programming-guide/classes-and-structs/polymorphism tıklayabilirsiniz. Yorumlarınızı ve sorularınızı bekliyorum. Sağlıcakla kalın.