C# programlama dilindeki Inheritance (Kalıtım) konusunu ele alacağız. Kalıtım, nesne tabanlı programlamada önemli bir kavramdır ve sınıflar arasında ilişki kurmayı sağlar. Kalıtım sayesinde, var olan bir sınıfın özelliklerini ve davranışlarını yeni bir sınıfa aktarabilir ve genişletebiliriz. Bu sayede kod tekrarını azaltır, esnek bir yapı oluştururuz.

Kalıtım yapısını anlamak için öncelikle temel sınıfı (base class) oluşturmamız gerekmektedir. Bu sınıf, diğer sınıflar tarafından miras alınacak olan özellikleri ve davranışları içermelidir. Örneğin, “Personel” adında bir sınıf oluşturalım:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace Inheritance
{
    class Personel
    {
        int _personelId;
        string _adSoyad;
        byte _yas;

        public int get_PersonelId()
        {
            return _personelId;
        }

        public void set_PersonelId(int value)
        {
            if (value < 0 || value > 1000)
                throw new ArgumentException("Personel ID 0-1000 aralığında olmalıdır.");
            else
                _personelId = value;
        }

        public string get_AdSoyad()
        {
            return _adSoyad;
        }

        public void set_AdSoyad(string value)
        {
            _adSoyad = value;
        }

        public byte get_Yas()
        {
            return _yas;
        }

        public void set_Yas(byte value)
        {
            _yas = value;
        }

        public Personel(int personelId, string adSoyad, byte yas)
        {
            //Personel tipinin kendisi de field'larına atanan değerlerin kontrolünü sağlamak için  kapsülleri (set metotlarını) kullanmalıdır.

            //_personelId = personelId;
            set_PersonelId(personelId);
            //_adSoyad = adSoyad;
            set_AdSoyad(adSoyad);
            //_yas = yas;
            set_Yas(yas);
        }

    }
}

Yukarıdaki örnekte, “Personel” sınıfının özellikleri ve kurucu metodu bulunmaktadır. Özelliklere erişim için get ve set metotları kullanılmaktadır.

Türetilmiş Sınıf (Derived Class) oluşturma: Temel sınıfı oluşturduktan sonra, bu sınıftan türetilmiş (derived) sınıflar oluşturabiliriz. Türetilmiş sınıflar, temel sınıfın özelliklerini ve davranışlarını miras alır ve isteğe bağlı olarak bunları genişletebilir veya değiştirebilir. Örneğin, “Mudur” adında bir türetilmiş sınıf oluşturalım:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace Inheritance
{
    class Mudur : Personel
    {
        string _sorumluBolge;

        public string get_SorumluBolge()
        {
            return _sorumluBolge;
        }

        public void set_SorumluBolge(string value)
        {
            _sorumluBolge = value;
        }
                
        public Mudur(int personelId,string adSoyad,byte yas,string sorumluBolge):base(personelId,adSoyad,yas)
        {
            //base anahtar sözcüğüyle yapılan ctor çağrısı, yalnızca ctor'ın imzasında belirtilebilir.
            //base(personelId, adSoyad, yas);

            
            set_SorumluBolge(sorumluBolge);
        }
    }
}

Yukarıdaki örnekte, “Mudur” sınıfı, “Personel” sınıfından türetilmiştir. Ek olarak, “sorumluBolge” adında bir özelliğe sahiptir. Kurucu metot, base anahtar kelimesiyle temel sınıfın kurucu metodunu çağırmaktadır.

Türetilmiş sınıfları kullanmak için ana programda örnekler oluşturabiliriz.

class Program
{
    static void Main(string[] args)
    {
        Personel p = new Personel(3000, "Koksal Acı", 40);
       

        Mudur m = new Mudur(1000, "Koksal Aci", 45, "Doğu Bölgesi");
        
    }
}

Yukarıdaki örnekte, “Personel” ve “Mudur” sınıflarından örnekler oluşturulmaktadır. Her sınıfın kurucu metodu kullanılarak örneklerin özellikleri belirlenebilir.

Inheritance (Kalıtım) konusunu ele aldık. Temel sınıf ve türetilmiş sınıf oluşturma, özelliklerin miras alınması ve genişletilmesi konularını örneklerle göstermeye gayret ettim. Görüşmek üzere sevgiler.