Base(Temel) Class ve Derived(Türetilmiş) Class Nedir?
Kalıtım veren sınıfa Base/Parent Class denir. Kalıtım alan sınıfa Derived/Child Class denir.
Projemizde Base Class denen bir yapılanma var denince aklımıza hemen kalıtım-Inheritance gelmeli.

Bir sınıfın yalnızca bir base class’ı olabilir oda türediği sınıftır. Atası olsa dahi türediği sınıf değilse base class’ı değildir o sınıfın. Bir sınıfın birden fazla derived sınıfı olabilir.
Kalıtımın Altın Kuralı
Bir class’ın sade ve sadece bir Base Class’ı olur.
Bunun nedeni, C# programlama dilinde bir class’ın sade ve sadece tek bir class’tan türetilmesine izin verilmektedir. Aynı anda birden fazla class’tan türeme işlemi gerçekleştirilemez.
Kalıtım Nesne Üretim Sırası
Bir sınıftan nesne üretimi yapılırken kalıtım aldığı üst sınıflar varsa eüer önce o sınıflardan sırayla nesne üretilir.
Kalıtımda nesne oluşturma sırası atalardan başlayacak şekildedir. En son kalıtım alınan ve kalıtım alan oluşur.
Bir sınıftan Base Class Contrtructor’ına Ulaşım
- Madem ki, herhangi bir sınıftan nesne üretimi gerçekleştirilirken öncelikle base class’ından nesne üretiliyor, bu demektir ki önce base class’ın constructor’ı tetikleniyor.
- Haliyle bizle nesne üretimi esnasında base class’ta üretilecek olan nesnenin istediğimiz constructor’larını tetikleyebilmeli yahut varsa parametre bu değerleri verebilmeliyiz.
- İşte bunun için base Keyword’ü nü kullanmaktayız.
Örnek Olarak
class MyClass
{
public MyClass(int a)
{
{
}
class MyClass2
{
public MyClass2():base(5)
{
{
}
‘base’ keyword’ü ile miraz alınan yani base class’ın constructor’unu tetiklemiş oluyoruz.
Eğer ki base class’ta boş parametreli bir constructor varsa derived classta base ile bir bildirimde bulunmak zorunda değiliz. Çünki varsayılan olarak kalıtımsal durumda boş parametreleri constructor tetiklenir. Bir class’ın contructorlarının yanında ‘:base(…)’ keyword’ünü kullanıyorsak eğer o class’ın base classının tüm constructorlarını bize getirecektir. Haliyle ilgili sınıftan bir nesne üretilirken base classtan nesne üretimi esnasında hangi constructorın tetiklendiğini bu şekilde belirleyebiliriz.
base Keyword vs this Keyword
this, bir sınıfın contructor’lar arasında geçiş yapmamızı sağlar.
base, bir sınıfın base class’ının constructor’larından hangisinin tetikleneceğini belirlememizi ve ne varsa parametrelerinin değerlerinin derived class’tan verilmesini sağlar.
