Kalıtım, nesne yönelimli programlamanın (NYP) en temel ve güçlü prensiplerinden biridir. Esasen, bir sınıfın (çocuk sınıf veya alt sınıf denir) başka bir sınıfın (ebeveyn sınıf veya üst sınıf denir) özelliklerini (alanlarını) ve davranışlarını (metotlarını) miras alarak yeni bir sınıf oluşturma mekanizmasıdır.
Bu sayede, kod tekrarını en aza indirir, çünkü ortak işlevsellik tek bir yerde tanımlanır ve birden fazla sınıf tarafından kullanılır. Ayrıca, yazılım mimarinde hiyerarşik bir yapı kurmanı sağlayarak modülerliği ve okunabilirliği artırır.
Sen bir ebeveyn sınıf tanımlarsın ve bu ebeveyn sınıftan bir veya daha fazla çocuk sınıf türetirsin. Çocuk sınıf, ebeveyninin tüm public ve protected üyelerine otomatik olarak erişebilir. Hatta kendi özel ihtiyaçlarına göre ebeveyninden miras aldığı metotları geçersiz kılabilir (override) veya tamamen yeni metotlar ve özellikler ekleyebilir. Bu, sana hem standart bir temel sunarken hem de özelleştirme esnekliği sağlar.
Örneğin, Hayvan adında bir ebeveyn sınıfın olsun, içinde adi, yasi gibi özellikler ve yemekYe() gibi bir metot bulunsun. Köpek ve Kedi gibi çocuk sınıflar bu Hayvan sınıfından miras alabilir. Böylece Köpek ve Kedi otomatik olarak adi ve yasi özelliklerine ve yemekYe() metoduna sahip olur. Köpek kendi havla() metodunu eklerken, Kedi de kendi miyavla() metodunu ekleyebilir.
Araba, bir Taşıt mıdır?" Evet. O zaman Araba, Taşıttan miras alabilir. Ama "Bir Araba, bir Motor mudur?" Hayır. Bu durumda kalıtım yerine bileşim (composition) kullanman daha doğru olur. Yanlış kalıtım hiyerarşileri, kodunu karmaşıklaştırır ve ileride bakımını zorlaştırır.Özetle, kalıtım sana kodunu düzenli, sürdürülebilir ve esnek tutmanda büyük bir araçtır, ancak onu doğru kullanmak için temel prensipleri ve potansiyel tuzakları iyi anlaman gerekir.