Tavsiye, 2020

Editörün Seçimi

Tek ve Çoklu Kalıtım Arasındaki Fark

Kalıtım, yeniden kullanılabilirlik kavramını güçlü bir şekilde desteklemektedir; yani yeni yaratılmış sınıf, zaten var olanların özelliklerini yeniden kullanır. Access belirticisi, temel sınıf üyesinin türetilmiş sınıf tarafından miras alınmasına karar verir. Tek, çoklu, Hiyerarşik, Çok Düzeyli, Hibrit kalıtım elde etmenin birçok yolu vardır. Oysa ana tartışma konusu, tek ve çoklu miras arasındaki farktır. Tek mirasta, yalnızca bir türetilmiş sınıf tarafından miras alınan yalnızca bir temel sınıfa sahibiz. Çoklu kalıtımda, yalnızca bir türetilmiş sınıf tarafından miras alınan ikiden fazla temel sınıfımız var.


Karşılaştırma Tablosu

Karşılaştırma için temelTek KalıtımÇoklu Kalıtım
TemelTüretilmiş sınıf, tek bir temel sınıfı miras alır.Türetilmiş sınıf, iki veya ikiden fazla temel sınıfı miras alır.
uygulamaTüretilmiş sınıf: access_specifier temel sınıfSınıf türetilmiş _ sınıfı: access_specifier base_class1, access_specifier base_class2, ....
Erişim
Türetilmiş sınıf, tek taban sınıfının özelliklerine erişimTüretilmiş sınıf, kalıtsal temel sınıfların birleştirilmiş özelliklerine erişim
görünürlükKamu, Özel, KorumalıKamu, Özel, Korumalı
Koşmak zamanBaş üzerinde az miktarda çalışma süresi gerektirirTek mirasa kıyasla ek çalışma zamanı ek yükü gerektir

Tek Kalıtımın Tanımı

Tek mirasta, tek bir temel sınıf ve bir tek türetilmiş sınıf vardır. Derived sınıf, temel sınıfı ya genel, korunaklı ve özel olarak miras alır. Temel sınıf üyelerine, temel sınıfı devralma sırasında belirtilen erişim belirticisine göre türetilmiş sınıfla erişilebilir.

Gerçek bir yaşam örneğimize bakalım iki sınıfımız var, “hesap sınıfı” ve “tasarruflu hesap sınıfı”. Burada “hesap sınıfının kaydedilmesi” “hesap sınıfının” özelliğini devralabilir, böylece “hesap sınıfının” sınıfı, hesap sınıfının kaydedilmesi için temel / üst sınıf / ana sınıf olacak ve “hesap sınıfının kaydedilmesi” türetilmiş bir sınıf olacaktır.

Burada “hesap sınıfının” öznitelikleri acc_no (private) ve balance (public) ve üye işlevleri initialize (), get_accno () publicdir. Artık “hesap sınıfı” kamuya “hesap sınıfını kaydetme” ye miras kalıyor, böylece “hesap sınıfının” tüm kamu üyelerine doğrudan “hesap sınıfını kaydetme” ile erişilebiliyor. “Hesap sınıfı” özel üyesine “hesap sınıfı” genel üye işlevleriyle erişebilir, ancak doğrudan erişemez.

Tek Kalıtımın Uygulanması:

 # std ad alanını kullanarak dahil; sınıf Hesap {int acc_no, ; kamu: şamandıra dengesi; void initialize (int x, int y) {acc_no = x; denge = y; } int get_accno. () {return acc_no; }}; sınıf Saving_acc: public Account {float intrest_rate; public: // Saving_acc sınıfının kurucusu Saving_acc (int c) {interest_rate = c; } void display () {cout < 

Çoklu Kalıtımın Tanımı

Çoklu kalıtım, türetilmiş sınıfın birden fazla baz sınıfın birleşik özelliklerini miras almasına izin verir, yani tek türetilmiş sınıf ve çoklu baz sınıflarımız vardır. Her temel sınıf, her biri için ayrı erişim belirtecinden söz ederek miras edilmelidir. Türetilmiş bir sınıf, temel sınıfın devralındığı erişim belirticisine dayanarak temel sınıf üyelerine erişebilir.

Bisiklet, Araba ve Araç olmak üzere üç sınıfımız var. Artık “Taşıt”, “Araba” nın yanı sıra “Bisiklet” özelliklerini de alabilir. Böylece “Araç” türetilmiş, “Bisiklet” ve “Otomobil” temel sınıf haline gelmiştir. Şimdi, “Bisiklet” ve “Araba”, “Araç” tarafından kamuya miras kaldı; “Bisiklet” ve “Otomobil” in tüm kamu üyelerine erişebiliyor, ancak “Otomobil” de korunan bir Model_no varlığımız var, bu yüzden de Araba için özel ancak olabilir. “Araç” tarafından erişilebilir.

Çoklu Kalıtımın Uygulanması:

 # namespace std kullanarak dahil; sınıf Bisikleti {int engine_cost; ; public: void set_engine_cost (int x) {engine_cost = x; }}; sınıf Araba {korumalı: int Model_no; public: void set_Model_no (int p) {Model_no = p; }}; Vehical sınıfı: genel Bisiklet, genel araç {int no_of_wheels genel: vehical (int w) {no_of_wheels = w; cout << "tekerlek sayısı" < 

Tek ve Çoklu Kalıtım Arasındaki Temel Farklılıklar

  1. Tek kalıtım, tek bir baz sınıfına sahip türetilmiş bir sınıftır, oysa çoklu kalıtım, iki veya daha fazla baz sınıfına, fakat tek türetilmiş sınıfa sahiptir.
  2. Çoklu kalıtım, burada iki veya daha fazla temel sınıfı miras alan tek bir türetilmiş sınıfın oldukça kafa karıştırıcı olduğu görülmektedir. Temel sınıfların türetilmiş sınıf için aynı ada sahip bir özniteliği veya işlevi varsa, hangi temel sınıfın özniteliğinin veya işlevinin türetilmesi gerektiğini belirlemek zorlaşır.
  3. Genel devralma, tek miras durumunda daha azdır. Ancak çoklu kalıtım durumunda, nesne inşası veya imhası, genel hiyerarşideki yükü artıran ana sınıfın yapıcılarını ve imhasını çağırır.
  4. Tek miras, uzmanlaşma yolunda daha fazladır. Oysa çoklu kalıtım genelleme yönünde daha fazladır.
  5. Tek kalıtımın ek yükü daha az olduğundan, çoklu kalıtımla karşılaştırıldığında daha az çalışma zamanına sahiptir.

Sonuç

Kalıtım, programcının çalışmasını kolaylaştırır, sanki bir sınıf hali hazırda oluşturulmuşsa, özellikleri gerektiğinde başkaları tarafından uyarlanabilir. Erişim belirteci, bir temel sınıf üyelerine erişimi belirli bir şekilde sınırlandırsa da, verileri daha güvenli kılar. Tek miras, bir şekilde birden fazla mirastan daha basit ve uygulanması kolaydır. Kalıtım, nesne kodunun boyutunu azaltır, ancak programın çalışma süresini de etkiler.

Top