
C# - Inheritance Nedir
Inheritance (kalıtım), nesne yönelimli programlamanın üç temel unsurundan biridir. Kalıtım hiyerarşik sınıflandırma olanağı sağlar. Kalıtım kullanarak birbiri ile ilişkili bir grup nesnenin ortak özelliklerini tanımlayan temel bir sınıf oluşturabilriz. Bu temel sınıf daha sonra belirli sınıflara kalıtım yoluyla aktarılır.
C# dilinde kalıtım yoluyla aktarılan sınıfa temel sınıf adı verilir. Kalıtım işlemi gerçekleştirilen sınıf türetilmiş sınıf olarak adlandırılır. Bu sebeple türetilmiş sınıfa temel sınıfın özelleştirilmiş hali diyebiliriz. Türetilmiş sınıf temel sınıfta tanımlanmış tüm değişken, method, özellik gibi öğeleri kalıtım yoluyla elde eder. Kendine özgü öğeleri ayrıca kendine ekleyebilir.
using System;
using System.Collections.Generic;
public class Sekil
{
public double genislik;
public double yukseklik;
public void Goster()
{
Console.WriteLine("Genişlik: " + genislik + ", Yükseklik: " + yukseklik);
}
}
public class Ucgen: Sekil
{
public string adi;
public double Alan()
{
return genislik * yukseklik / 2;
}
}
public class Program
{
static void Main(string[] args)
{
Ucgen ucgen = new Ucgen();
ucgen.genislik = 10;
ucgen.yukseklik = 2;
ucgen.Goster();
Console.WriteLine("Üçgenin alanı: " + ucgen.Alan());
}
}
Program çıktısı;
> Genişlik: 10, Yükseklik: 2
> Üçgenin alanı: 10
Türetilmiş sınıflar sadece bir adet temel sınıftan kalıtım alabilir. C# türetilmiş sınıf içine birden fazla temel sınıfı kalıtım yoluyla aktarmayı desteklemez. Ancak bir türetilmiş sınıfı başka bir türetilmiş sınıfın temel sınıfı olmasını sağlayan kalıtım hiyararşisini destekler. Ayrıca hiçbir sınıf dolaylı yada dolaysız olarak kendi kendisinin temel sınıfı olamaz.
Kalıtımın başlıca avantajı, bir grup nesnenin ortak özelliklerini tanımlayan temel sınıf oluşturduktan sonra bu sınıf, özelleştirilmiş türetilmiş sınıfılardan istenilen sayıda oluşturmak için kullanılabilir. Örneğin Sekil sınıfımızdan türeyen Dikdortgen sınıfı gibi bir çok alt sınıflar oluşturabiliz.
Temel ve türetilmiş sınıflara referansta bulunurken bazen üst sınıf ve alt sınıf terimleri kullanılır. Bu terimler Java dilinden gelmektedir. Java'da üst sınıf terimi C# dilinde temel sınıf, alt sınıf ise türetilmiş sınıf olarak kullanılır. C++'da temel sınıfı/türetilmiş sınıf kelimelerini kullanır.