Kalıtım - Inheritance
Normalde bu kavramı gerçek hayattan biliyoruz. En basit anlamda, örneğin "Ben annemin gözlerini almışım." dediğimde, tıp uzmanlarının buna getirdikleri yorum "siz annenizden kalıtımsal olarak şu özellikleri almışsınız." oluyor. Programları dillerinde de kalıtımın rolünün aynı olduğunu söyleyebiliriz. Zaten nesne tabanlı programlama dillerini tasarlayan uzmanlar, gerçek hayat problemlerini, bilgisayar ortamına taşıyabilmek amacıyla en etkili modelleri geliştirmişler, bu model içerisine kalıtımı da katarak çok önemli bir özelliğin kullanılabilmesini sağlamışlardır.
Kalıtım kavramının programlama dilleri içerisinde bir tanımını yapmak lazım. En genel tanımı ile kalıtım, "Bir sınıftan yeni sınıflar türetmektir." Her şeyden önce kalıtım yolu ile bir sınıftan yeni sınıflar türetmenin, türetilen sınıflara etkisi nedir? Bu sorunun cevabı kalıtımın da özünü oluşturmaktadır. Türetilen her bir sınıf, türediği sınıfın özelliklerini de devralır. Buradan, türetilmiş bir sınıf içerisinden, türediği sınıfa ait üyelere erişilebileceği sonucunu çıkartabiliriz. Elbette bu erişimin de bazı kuralları vardır. Örneğin erişim belirleyicilerinin etkisi veya aynı üyelerin kullanılışı gibi durumlar.
Neden bir sınıftan başka sınıflar türetiriz?
Bunun cevabı şudur: Tüm sınıflarda ortak olan özellikleri tek bir sınıf içerisinde toplamak. Bu modellerimizi geliştirirken, her sınıf için ortak olan üyelerin tekrar yazılmasını engellemekle kalmayacak, sınıflar arasında düzenli bir hiyerarşi yapısının oluşmasını da sağlayacaktır.
Şimdi güzel bir örnek verelim. Gerçek hayat modelleri bu iş için biçilmiş kaftandır. Örneğin, otomobilleri bir temel sınıf olarak düşünebiliriz.
Bu sınıftan otomobillere ait değişik kategorileri yukarıda resimde görüldüğü gibi türetebiliriz. Buradaki tüm sınıfların ortak bir takım özellikleri var. Bir motorlarının olması, tekerlerinin olması, viteslerinin olması vb. ama aynı zamanda her ayrı sınıfın kendine has özellikleri de vardır. Örneğin ralli araçları için güvenlik bariyerlerinin olması, pilotlar için kaskların kullanılması gibi. Bu tabloyu inceleyince "Her ralli aracı bir otomobildir." diyebiliriz. Bu ralli araçlarının otomobil sınıfından türediğini gösterir. Diğer yandan "Her WRC bir ralli aracıdır" da diyebiliriz. Bu ise, WRC araçlarının ralli araçlarının birtakım ortak özelliklerine sahip olduğunu ayrıca otomobillerin de bir takım ortak özelliklerine sahip olduğunu gösterir.
İlk aşamada ralli, ticari, özel ve spor sınıflarının otomobil sınıfından türediğini söyleyebiliriz. Bununla birlikte WRC ve GrupN sınıfları da otomobil sınıfından türeyen ralli sınıfından türemiştir. Yani burada şunu söyleyebilmek mümkündür. WRC sınıfı hem ralli sınıfının hem de otomobil sınıfının özelliklerine kalıtımsal olarak sahiptir.