Program Örnekleriyle C# Kalıtım ve Çok Biçimlilik
⚡ Akıllı Özet
C#'da kalıtım ve polimorfizm, nesne yönelimli programlamanın iki temel prensibidir. Kalıtım, alt sınıfın üst sınıfın alanlarını ve metotlarını yeniden kullanmasına olanak tanırken, polimorfizm bir metot adının birçok farklı biçim almasına izin verir.

C#'ta Kalıtım Nedir?
miras C#'ın önemli bir kavramıdır. Kalıtım, ana sınıfları ve alt sınıfları tanımladığınız bir kavramdır. Alt sınıflar ana sınıfın yöntemlerini ve özelliklerini miras alır, ancak aynı zamanda gerekirse yöntemlerin davranışını da değiştirebilirler. Gerekirse alt sınıf kendi yöntemlerini de tanımlayabilir.
Bir Program Örneği ile C# Kalıtımını daha iyi anlayalım:
C# Kalıtım Örneği
Şimdi miras kavramını kodumuza nasıl dahil edebileceğimizi görelim.
) 1 Adım İlk adım, Tutorial sınıfımızın kodunu değiştirmektir. Bu adımda Tutorial.cs dosyasına aşağıdaki kodu ekliyoruz.
Artık 'korumalı' erişim değiştiricisini hem TutorialID hem de TutorialName alanına eklememiz gerektiğini unutmayın.
Hatırlarsanız bu erişim değiştiricisinden bahsetmiştik. Erişim Değiştirici Eğitimiİşte bunun amacını burada görebilirsiniz. Yalnızca bu erişim değiştiriciye (protected) sahip olduğunuzda, alt sınıf üst sınıfın alanlarını kullanabilir.
) 2 Adım İkinci adım, yeni alt sınıfımızı eklemektir. Bu sınıfın adı "Guru"99Tutorial". Bu adımda, aşağıdaki kodu Tutorial.cs dosyasına ekliyoruz. Kod, Tutorial sınıf tanımından sonra yerleştirilmelidir.
Code Açıklama:-
- İlk adım, oluşturmaktır. Guru99Tutorial alt sınıfı. Ayrıca bu sınıfın Tutorial sınıfının bir alt sınıfı olacağını da belirtmemiz gerekiyor. Bu, ':' anahtar kelimesiyle yapılır.
- Daha sonra RenameTutorial adında bir yöntem tanımlıyoruz. TutorialName alanını yeniden adlandırmak için kullanılacaktır. Bu yöntem, Öğreticinin yeni adını içeren bir dize değişkenini kabul eder.
- Daha sonra TutorialName alanına pNewName parametresini atadık. not: – Her ne kadar “Guru"99Tutorial" sınıfında bile bu alana hala erişebiliyoruz. Bunun sebebi, "Guru"99Tutorial" sınıfı, Tutorial sınıfının alt sınıfıdır. Tutorial sınıfının alanlarını protected olarak tanımladığımız için, bu sınıf tarafından da erişilebilirler.
) 3 Adım Son adım, ana Program.cs dosyamızı değiştirmektir. Konsol uygulamamızda, bir nesnesi oluşturacağız. Guru99Tutorial sınıfı. Bu nesneyle, RenameTutorial yöntemini çağıracağız. Ardından, GetTutorial yöntemi yardımıyla TutorialName alanını görüntüleyeceğiz.
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace DemoApplication { public class Tutorial { protected int TutorialID; protected string TutorialName; public void SetTutorial(int pID,string pName) { TutorialID=pID; TutorialName=pName; } public String GetTutorial() { return TutorialName; } } public class Guru99Tutorial:Tutorial { public void RenameTutorial(String pNewName) { TutorialName=pNewName; } static void Main(string[] args) { Guru99Tutorial pTutor=new Guru99Tutorial(); pTutor.RenameTutorial(".Net by Guru99"); Console.WriteLine(pTutor.GetTutorial()); Console.ReadKey(); } } }
Code Açıklama:-
- İlk adım, bunun için bir nesne oluşturmaktır. Guru99Tutorial sınıfı. Bu işlem 'new' anahtar kelimesiyle yapılır. Bu sefer Tutorial sınıfının bir nesnesini oluşturmadığımıza dikkat edin.
- RenameTutorial yöntemini kullanıyoruz. Guru99Tutorial sınıfı, TutorialName alanını değiştirmek için kullanılır. ".Net by" dizesini iletiyoruz. Guru99” RenameTutorial yöntemine.
- Ardından GetTutorial yöntemini çağırıyoruz. Bu yöntemin tanımlı olmamasına rağmen, Guru99Tutorial sınıfında, bu metoda hala erişebiliyoruz. GetTutorial metodunun çıktısı daha sonra Console.WriteLine metodu aracılığıyla konsola yazdırılıyor.
Yukarıdaki kod doğru bir şekilde girilir ve program başarıyla çalıştırılırsa aşağıdaki çıktı gösterilecektir.
Çıktı:
Çıktıdan da açıkça görülebildiği gibi, TutorialName alanı ".Net tarafından" olarak yeniden adlandırılmıştır. Guru99”. Bu, alt sınıf tarafından çağrılan RenameTutorial yöntemi sayesinde mümkün oldu.
C#'ta Polimorfizm nedir?
Polimorfizm in C# Bir ismin birçok farklı biçime sahip olabileceği bir OOP (Nesne Yönelimli Programlama) kavramıdır. Örneğin, iletişim için bir akıllı telefonunuz var. Seçtiğiniz iletişim modu her şey olabilir. Arama, kısa mesaj, resimli mesaj, e-posta vb. Yani amaç ortak, yani iletişim, ancak yaklaşımları farklı. Buna Polimorfizm denir.
Aşağıdaki Program Örneği ile C# Polimorfizmini daha iyi anlayacaksınız:
C# Polimorfizm Örneği
Şimdi Polimorfizm kavramını kodumuza nasıl dahil edebileceğimize bakalım.
) 1 Adım İlk adım, Tutorial sınıfımızın kodunu değiştirmektir. Bu adımda Tutorial.cs dosyasına aşağıdaki kodu ekliyoruz.
Code Açıklama:-
1 ve 2) İlk adım, önceki örneklerimizdekiyle aynıdır. Bizler...ping SetTutorial metodunun tanımı şu şekildedir.
3) Bu yöntem, TutorialID ve TutorialName'i pID ve pName parametrelerine göre ayarlar.
4) Burası sınıfımızda bir değişiklik yaptığımız ve SetTutorial ile aynı adı taşıyan yeni bir yöntem eklediğimiz yerdir. Ancak bu sefer sadece pName parametresini geçiyoruz. Bu yöntemde sadece TutorialName alanını pName olarak ayarlıyoruz.
) 2 Adım Son adım, ana Program.cs dosyamızı değiştirmektir. Konsol uygulamamızda, bir nesnesi oluşturacağız. Guru99Öğretim dersi.
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace DemoApplication { class Tutorial { public int TutorialID; public string TutorialName; public void SetTutorial(int pID,string pName) { TutorialID=pID; TutorialName=pName; } public void SetTutorial(string pName) { TutorialName=pName; } public String GetTutorial() { return TutorialName; } static void Main(string[] args) { Tutorial pTutor=new Tutorial(); pTutor.SetTutorial(1,"First Tutorial"); Console.WriteLine(pTutor.GetTutorial()); pTutor.SetTutorial("Second Tutorial"); Console.WriteLine(pTutor.GetTutorial()); Console.ReadKey(); } } }
Code Açıklama:-
- İlk adımda SetTutorial metodunu 2 parametre ile kullanıyoruz. Hem TutorialID'yi hem de TutorialName'i bu yönteme aktarıyoruz.
- İkinci adımda artık SetTutorial metodunu tek parametre ile çağırıyoruz. Bu metoda sadece TutorialName’i aktarıyoruz.
Yukarıdaki kod düzgün bir şekilde girilirse ve program çalıştırılırsa aşağıdaki çıktı görüntülenecektir. Eğer Tutorial ID'yi Tutorial Name ile birlikte almak isterseniz, aşağıdaki adımı takip etmelisiniz
- public int GetTutorialID adında ayrı bir yöntem oluşturun
- Bu yöntemde "return TutorialID" kod satırını yazın. Bu, TutorialID'yi çağıran programa döndürmek için kullanılabilir.
Çıktı:
Çıktıdan her iki yöntemin de başarıyla çağrıldığını açıkça görebiliriz. Bu nedenle konsola “Birinci Eğitim” ve “İkinci Eğitim” dizeleri gönderildi.







