Program Örnekleriyle C# Kalıtım ve Çok Biçimlilik
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.
Bu erişim değiştiriciden Erişim Değiştirici eğitiminde bahsettiğimizi unutmayın. Burada buna sahip olmanın amacını görebilirsiniz. Yalnızca bu erişim değiştiricisine (korumalı) sahip olduğunuzda, alt sınıf ana 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ı “Guru99Tutorial” olacaktır. Bu adımda Tutorial.cs dosyasına aşağıdaki kodu ekliyoruz. Kod, Tutorial sınıfı tanımından sonra yerleştirilmelidir.
Kod Açıklaması:-
- İlk adım Guru99Tutorial alt sınıfını oluşturmaktır. Ayrıca bu sınıfın Tutorial sınıfının 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: – “Guru99Tutorial” sınıfında TutorialName alanını tanımlamamış olsak da bu alana ulaşabiliyoruz. Bunun nedeni “Guru99Tutorial”ın Tutorial sınıfının alt sınıfı olmasıdır. Ve Tutorial sınıfının alanlarını korumalı yaptığımız için bu sınıf tarafından bunlara erişilebilir.
) 3 Adım Son adım, ana Program.cs dosyamızı değiştirmektir. Konsol uygulamamızda Guru99Tutorial sınıfının bir nesnesini oluşturacağız. Bu nesne ile RenameTutorial metodunu çağıracağız. Daha sonra GetTutorial metodunun 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(); } } }
Kod Açıklaması:-
- İlk adım Guru99Tutorial sınıfı için bir nesne oluşturmaktır. Bu 'yeni' anahtar kelime aracılığıyla yapılır. Bu sefer Tutorial sınıfının bir nesnesini yaratmadığımızı unutmayın.
- TutorialName alanını değiştirmek için Guru99Tutorial sınıfının RenameTutorial metodunu kullanıyoruz. RenameTutorial metoduna “.Net by Guru99” stringini aktarıyoruz.
- Daha sonra GetTutorial metodunu çağırıyoruz. Bu yöntemin Guru99Tutorial sınıfında tanımlanmamış olmasına rağmen yine de bu yönteme erişebildiğimizi unutmayın. GetTutorial yönteminin çıktısı daha sonra Console.WriteLine yöntemi aracılığıyla konsolda görüntülenir.
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 TutorialName alanının “.Net by Guru99” olarak yeniden adlandırıldığını açıkça görebiliyoruz. Bu, alt sınıf tarafından çağrılan RenameTutorial yöntemiyle mümkün oldu.
C#'ta Polimorfizm nedir?
Polimorfizm C#'ta bir ismin birçok biçiminin olabileceği bir OOPs kavramıdır. Örneğin, iletişim için bir akıllı telefonunuz var. Seçtiğiniz iletişim modu herhangi bir şey olabilir. Bir çağrı, bir kısa mesaj, bir resim mesajı, e-posta vb. olabilir. Yani, amaç ortaktır, yani iletişimdir, ancak yaklaşımları farklıdır. 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.
Kod Açıklaması:-
1 & 2) İlk adım önceki örneklerimizdekiyle aynıdır. SetTutorial metodunun tanımını olduğu gibi koruyoruz.
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 Guru99Tutorial sınıfının bir nesnesini oluşturacağız.
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(); } } }
Kod Açıklaması:-
- İ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.
ÖZET
- Kalıtım, bir alt sınıfın ana sınıfın alanlarını ve yöntemlerini miras almasıdır. Çocuk sınıfı daha sonra kendi yöntemlerini de tanımlayabilir.
- Polimorfizm C# bir ismin birçok forma sahip olabileceği bir OOP kavramıdır.