C++ Kalıtımı

C Inheritance



Kalıtım, nesne yönelimli programlamanın çok önemli bir özelliğidir. Programcının mevcut bir sınıftan bir sınıf türetmesine izin verir. Bu, özellikle büyük ve karmaşık bir projede çok kullanışlıdır çünkü programcının kodu yeniden kullanmasına olanak tanır.

Bu yazıda, C++ programlamasında kalıtım kavramını tartışacağız. C++'da friend fonksiyonu kavramını çalışma örnekleri ile açıklayacağız.







Neden Miras?

Kalıtım, başka bir sınıftan veya temel sınıftan yeni bir sınıf veya türetilmiş sınıf oluşturmaya izin verir. Türetilmiş sınıf veya alt sınıf, ana sınıfın veya temel sınıfın tüm özelliklerine sahip olacaktır. Kodu kalıtım yardımı ile yeniden kullanabiliriz.



Miras Türü

Farklı miras türleri vardır:



  1. Basit/Tek Kalıtım
  2. Hiyerarşik Kalıtım
  3. Çok Düzeyli Kalıtım
  4. Çoklu Kalıtım

Bu yazıda sadece basit/tek kalıtımı ele alacağız.





Örnek 1:

Şimdi, C++'da kalıtım kavramını anlamak için örnek bir programa bakalım. Bir temel sınıf tanımladık ve ondan sonra başka bir sınıf türettik. Bu nedenle, türetilmiş sınıf, temel sınıftan özelliklere (üyeler ve işlevler) sahip olacaktır.

#Dahil etmek

ad alanı std kullanarak;

sınıf Temel_Sınıf
{
halka açık:
intben;
geçersizGörüntüle()
{
maliyet<< 'Temel Sınıfın Ekranı' <<ben<<son;
}

};

sınıf Derived_Class:genel Base_Class
{
halka açık:
geçersizgöstermek()
{
maliyet<< 'Türetilmiş Sınıf Gösterisi' <<son;
}
};

intana()
{
Derived_Class dc;
dc.ben = 100;
dc.Görüntüle();
dc.göstermek();

dönüş 0;
}



Örnek 2:

Bu, C++'daki başka bir kalıtım örneğidir. Bu örnekte, türetilmiş bir sınıf nesnesi oluşturulduğunda yapıcıların nasıl çağrıldığını göreceğiz.

Aşağıda görebileceğiniz gibi, iki temel sınıf yapılandırıcısı ve üç türetilmiş sınıf yapılandırıcısı tanımladık. Aşağıdaki çıktıdan, türetilmiş sınıf kurucusu çağrılmadan önce temel sınıf kurucusunun çağrıldığını açıkça fark edebilirsiniz.

#Dahil etmek
ad alanı std kullanarak;

sınıf Temel_Sınıf
{
halka açık:
Temel_Sınıf()
{
maliyet<< 'Base_Class - Parametre Yok' <<son;
}
Temel_Sınıf(intx)
{
maliyet<< 'Base_Class - Parametreler:' <<x<<son;
}
};

sınıf Derived_Class:genel Base_Class
{
halka açık:
Türetilmiş sınıf()
{
maliyet<< 'Derived_Class - Parametre Yok' <<son;
}
Türetilmiş sınıf(intve)
{
maliyet<< 'Derived_Class - Parametreler:' <<ve<<son;
}
Türetilmiş sınıf(intx,intve):Temel_Sınıf(x)
{
maliyet<< 'Derived_Class'ın Paramı:' <<ve<<son;
}
};

intana()
{
Derived_Class d(7,19);
}

Örnek 3:

Bu örnekte, türetilmiş sınıf nesnelerinin nasıl kullanılabileceğini göreceğiz.

Gördüğünüz gibi, tanımlanmış iki sınıf vardır: Rectangle_Class ve Cube_Class. Rectangle_Class, türetilmiş sınıfın, yani Cube_Class'ın türetildiği temel sınıftır. Bu nedenle, özellikleri Rectangle_Class'tan Cube_Class'a miras alıyoruz.

Ayrıca, genel erişim kontrolü ile Cube_Class'ı devraldığımızı fark edebilirsiniz. Bu, türetilmiş sınıfın, temel sınıfın özel olmayan tüm üyelerine erişebileceği anlamına gelir.

Türetilmiş sınıfın bir nesnesini bildirdik ve ardından temel sınıftan, yani setLength() ve setBreadth() yöntemlerini çağırdık.

#Dahil etmek

ad alanı std kullanarak;

class Rectangle_Class
{
özel:
intuzunluk;
intgenişlik;
halka açık:
Rectangle_Class();
Rectangle_Class(intNS,intB);
Rectangle_Class(Rectangle_Class&r);
intgetLength()
{
dönüşuzunluk;
}
intgetBreadth()
{
dönüşgenişlik;
}
geçersizsetUzunluk(intNS);
geçersizsetGenişlik(intB);
intalan();
};

sınıf Küp_Sınıfı:genel Rectangle_Class
{
özel:
intboy uzunluğu;
halka açık:
Küp_Sınıfı(intH)
{
boy uzunluğu=H;
}
intgetHeight()
{
dönüşboy uzunluğu;
}
geçersizsetYükseklik(intH)
{
boy uzunluğu=H;
}
intSes()
{
dönüşgetLength()*getBreadth()*boy uzunluğu;
}
};


Rectangle_Class::Rectangle_Class()
{
uzunluk=1;
genişlik=1;
}
Rectangle_Class::Rectangle_Class(intNS,intB)
{
uzunluk=NS;
genişlik=B;
}
Rectangle_Class::Rectangle_Class(Rectangle_Class&r)
{
uzunluk=r.uzunluk;
genişlik=r.genişlik;
}
geçersizRectangle_Class::setUzunluk(intNS)
{
uzunluk=NS;
}
geçersizRectangle_Class::setGenişlik(intB)
{
genişlik=B;
}
intRectangle_Class::alan()
{
dönüşuzunluk*genişlik;
}

intana()
{
Cube_Class c(8);
C.setUzunluk(12);
C.setGenişlik(9);
maliyet<<'Hacim'<<C.Ses()<<son;
}

Çözüm:

Bu yazımda Kalıtım kavramını açıkladım. C++ . C++, çoklu kalıtım dahil olmak üzere farklı kalıtım türlerini destekler (yani, özellikleri birden çok temel sınıftan veya üst sınıftan devralma). Ancak, daha basit hale getirmek için burada yalnızca tek mirası dikkate aldım. Kalıtımı C++ programlamasında nasıl kullanabileceğimizi ve kodu yeniden nasıl kullanabileceğimizi açıklamak için üç çalışma örneği gösterdim. Üstelik bu, C++'ın çok kullanışlı bir özelliğidir.