Kalıtım, nesne yönelimli programlamanın temel özelliklerinden biridir ve bir sınıfın (alt sınıf) başka bir sınıftan (üst sınıf) özellikleri ve davranışları miras almasını sağlar. Bu sayede, kod tekrarı azaltılır ve yazılım geliştirme süreci daha verimli hale gelir.
1. Basit Kalıtım (Single Inheritance)
Bir sınıfın yalnızca bir üst sınıftan özellikleri miras almasıdır.
Örnek
#include<iostream>usingnamespace std;classHayvan {public:voidsesCikar() { cout <<"Hayvan ses çıkarıyor!"<< endl; }};classKedi:publicHayvan {public:voidmiyavla() { cout <<"Kedi miyavlıyor!"<< endl; }};intmain() { Kedi kedi;kedi.sesCikar(); // Üst sınıftan miras alınan metotkedi.miyavla(); // Alt sınıfa ait metotreturn0;}
2. Çoklu Kalıtım (Multiple Inheritance)
Bir sınıfın birden fazla üst sınıftan miras almasıdır. C++ bu özelliği destekler.
Bir sınıfın, başka bir sınıftan miras alarak yeni bir alt sınıf oluşturmasıdır.
Örnek
#include<iostream>usingnamespace std;classHayvan {public:voidsesCikar() { cout <<"Hayvan ses çıkarıyor!"<< endl; }};classKedi:publicHayvan {public:voidmiyavla() { cout <<"Kedi miyavlıyor!"<< endl; }};classSarmanKedi:publicKedi {public:voidsarmanMiyavla() { cout <<"Sarman kedi özel bir miyav çıkarıyor!"<< endl; }};intmain() { SarmanKedi sarmanKedi;sarmanKedi.sesCikar(); // Üst sınıftan miras alınan metotsarmanKedi.miyavla(); // Kedi sınıfından miras alınan metotsarmanKedi.sarmanMiyavla(); // SarmanKedi sınıfına ait metotreturn0;}
Kalıtım Erişimi (Inheritance Access)
Kalıtımda, erişim belirleyicileri (public, protected, private) kullanılarak alt sınıfların üst sınıflara erişim şekli belirlenir:
Public Kalıtım: Üst sınıftaki public ve protected üyeler alt sınıfta aynı erişimle görünür. (Örnek: class Kedi : public Hayvan)
Protected Kalıtım: Üst sınıftaki public ve protected üyeler alt sınıfta protected olarak görünür. (Örnek: class Kedi : protected Hayvan)
Private Kalıtım: Üst sınıftaki public ve protected üyeler alt sınıfta private olarak görünür. (Örnek: class Kedi : private Hayvan)
Örnek
#include<iostream>usingnamespace std;classHayvan {public:voidsesCikar() { cout <<"Hayvan ses çıkarıyor!"<< endl; }protected:voidkoru() { cout <<"Koru!"<< endl; }private:voidgizli() { cout <<"Bu bir gizli metot!"<< endl; }};classKedi:publicHayvan {public:voidsesCikarKedi() {sesCikar(); // Public erişimkoru(); // Protected erişim // gizli(); // Hata! Private erişim }};intmain() { Kedi kedi;kedi.sesCikarKedi(); // Hayvan sınıfından miras alınan metotlarreturn0;}
Sonuç
Kalıtım, C++ dilinde nesne yönelimli programlamanın önemli bir parçasıdır. Kodun yeniden kullanımını artırır, yazılım geliştirme sürecini hızlandırır ve daha iyi bir organizasyon sağlar. Kalıtım erişimi sayesinde, alt sınıfların üst sınıfların üyelerine erişimi kontrol edilebilir. C++'da kalıtımın etkili bir şekilde kullanılması, yazılım projelerinin yönetimini ve bakımını kolaylaştırır.