Vererbungsarten in C++ Was sollten Sie wissen?
Veröffentlicht: 2023-04-05Haben Sie sich jemals gefragt, wie einige beliebte Softwaresysteme aufgebaut sind? All dies ist einem leistungsstarken Mechanismus zu verdanken, der in der objektorientierten Programmierung (OOP) als Vererbung bezeichnet wird. Durch Vererbung können Programmierer neue Klassen erstellen, die auf bestehenden Klassen aufbauen, was die Wiederverwendung von Code und eine effiziente Softwareentwicklung ermöglicht. Stellen Sie sich vor, Sie bauen ein System, das mehrere Klassen erfordert, von denen jede einige gemeinsame Attribute und Verhaltensweisen aufweist.
Anstatt denselben Code wiederholt zu schreiben, können Sie Vererbung verwenden, um eine Basisklasse zu erstellen und daraus neue Klassen abzuleiten, wodurch Sie Zeit und Mühe sparen.
Vererbung ist nicht nur effizient, sondern auch vielseitig. In C++ gibt es mehrere Arten der Vererbung, jede mit einzigartigen Vorteilen und Anwendungsfällen.
In diesem Artikel werfen wir einen vollständigen Blick auf die verschiedenen Arten der Vererbung in C++ und stellen im gesamten Artikel relevante Codes, Erklärungen und Beispiele aus der Praxis bereit.
Inhaltsverzeichnis
Verschiedene Arten der Vererbung in C++
Die Programmiersprache C++ bietet ihren Programmierern fünf verschiedene Arten von Vererbungsoptionen. Je nach Kontext und Anforderung können Entwickler und Programmierer mit beiden Vererbungsarten arbeiten.
Einfache Vererbung
Die Einfachvererbung ist die häufigste Art der Vererbung in C++. Bei der einfachen Vererbung erbt eine abgeleitete Klasse von einer einzelnen Basisklasse. Das bedeutet, dass eine Klasse alle öffentlichen und geschützten Datenmember und Memberfunktionen der Basisklasse erbt, während sie die Möglichkeit hat, ihre eigenen Datenmember und Memberfunktionen hinzuzufügen.
Sehen Sie sich das folgende Code-Snippet an, um die Syntax und das Verständnis der Einzelvererbung zu erhalten:
// Basisklasse
Klasse Tier {
öffentlich:
Leere essen () {
std::cout << „Tier frisst“ << std::endl;
}
};
// Abgeleitete Klasse
Klasse Hund : öffentliches Tier {
öffentlich:
leere Rinde () {
std::cout << „Hund bellt“ << std::endl;
}
};
In diesem Beispiel haben wir eine Basisklasse namens Animal mit einer einzelnen Member-Funktion eat().Dann definieren wir eine abgeleitete KlasseDog , die öffentlich von Animalerbt .Dog hat auch seine eigene Member- Funktion bark().Durch die Verwendung von Einfachvererbung kannDog auf die Funktion eat()derKlasse Animalzugreifen und sein eigenes Verhalten mit derFunktion bark() hinzufügen.
Wann sollte die Einzelvererbung in C++ verwendet werden?
Programmierer können die einfache Vererbung verwenden, um eine abgeleitete Klasse zu erstellen, die der Basisklasse Funktionalität hinzufügt.
Beispielsweise können Sie die Einzelvererbung verwenden, wenn Sie ein Spiel mit verschiedenen Charakteren wie Kriegern, Magiern und Bogenschützen erstellen. Alle diese Charaktere haben einige gemeinsame Attribute und Verhaltensweisen wie Gesundheitspunkte, Angriffskraft und Bewegungsgeschwindigkeit. Durch die Verwendung von Einfachvererbung können Sie eine Basisklasse namens Character erstellen, die die gemeinsamen Attribute und Verhaltensweisen enthält, und jede Zeichenklasse davon ableiten, um ihre einzigartige Funktionalität hinzuzufügen.
Bei der Mehrfachvererbung kann eine abgeleitete Klasse von mehreren Basisklassen erben. Das bedeutet, dass eine Klasse mehr als eine direkte Elternklasse haben kann. Als Ergebnis erbt die abgeleitete Klasse alle öffentlichen und geschützten Datenmember und Memberfunktionen jeder Basisklasse.
Hier ist ein Beispiel für Mehrfachvererbung:
// Basisklasse 1
Klasse Form {
öffentlich:
virtueller Doppelbereich () = 0;
};
// Basisklasse 2
Klasse Farbe {
öffentlich:
virtueller std::string getColor() = 0;
};
// Abgeleitete Klasse
Klasse Rechteck : öffentliche Form, öffentliche Farbe {
öffentlich:
double area() überschreiben {
Rückgabebreite * Höhe;
}
std::string getColor() überschreiben {
Rückgabefarbe;
}
Privatgelände:
doppelte Breite = 5,0;
doppelte Höhe = 3,0;
std::string color = „blau“;
};
In diesem Beispiel haben wir zwei Basisklassen, Shape und Color , jede mit ihrer virtuellen Funktion.Dann definieren wir eine abgeleitete KlasseRectangle , die sowohl von Shape als auch von Color erbt.Rectangle überschreibt die virtuellen Funktionen beider Basisklassen, um eine eigene Implementierung bereitzustellen. Durch die Verwendung von Mehrfachvererbung kannRectangle die Eigenschaften beider Basisklassen ShapeundColorerben , um ein Rechteck mit einer bestimmten Farbe und Fläche zu erstellen.
Wann Sie Mehrfachvererbung in C++ verwenden sollten
Verwenden Sie die Mehrfachvererbung, wenn Sie die Funktionalität mehrerer Basisklassen kombinieren möchten. Stellen Sie sich beispielsweise eine GUI-Anwendung vor, die verschiedene Arten von Steuerelementen erfordert, wie z. B. Schaltflächen, Kontrollkästchen und Textfelder. Jeder Steuerelementtyp hat seine eigene Funktionalität und sein eigenes Verhalten, aber sie teilen auch einige gemeinsame Funktionen, wie z. B. das Verarbeiten von Benutzerereignissen und das Anzeigen von Text.
Durch die Verwendung von Mehrfachvererbung können Sie eine Basisklasse namensControl erstellen , die die allgemeine Funktionalität enthält, und jeden Steuerelementtyp davon ableiten, sowie andere Basisklassen, die ihre spezifische Funktionalität enthalten.
Bei der hierarchischen Vererbung wird eine einzelne Basisklasse von mehreren abgeleiteten Klassen geerbt. Wie bei der Mehrfachvererbung erhalten die abgeleiteten Klassen bei der hierarchischen Vererbung alle öffentlichen und geschützten Datenelemente und Elementfunktionen der Basisklasse.
Hier ist ein Codeausschnitt, der Ihnen hilft, die Implementierung der hierarchischen Vererbung in C++ zu verstehen:
// Basisklasse
Klasse Tier {
öffentlich:
virtuelle Leere makeSound () = 0;
};
// Abgeleitete Klasse 1
Klasse Katze : öffentliches Tier {
öffentlich:
void makeSound() überschreiben {
std::cout << „Miau“ << std::endl;
}
};
// Abgeleitete Klasse 2
Klasse Hund : öffentliches Tier {
öffentlich:
void makeSound() überschreiben {
std::cout << „Wuff“ << std::endl;
}
};
In diesem Beispiel haben wir eine Basisklasse namens Animal mit einer virtuellen Funktion makeSound().Dann definieren wir zwei abgeleitete Klassen,Cat und Dog, die beide vonAnimalerben . Jede abgeleitete Klasse überschreibt die FunktionmakeSound() , um ihre eigene Implementierung bereitzustellen.Mithilfe der hierarchischen Vererbung können wir verschiedene Arten von Tieren erschaffen, die gemeinsame Verhaltensweisen aufweisen, wie z. B. Geräusche zu machen.
Wann die hierarchische Vererbung in C++ verwendet werden sollte
Verwenden Sie die hierarchische Vererbung, wenn Sie mehrere abgeleitete Klassen mit gemeinsamer Funktionalität erstellen möchten. Stellen Sie sich beispielsweise eine Banking-Anwendung vor, die unterschiedliche Arten von Konten erfordert, wie z. B. Sparkonten, Girokonten und Kreditkartenkonten. Alle diese Kontotypen haben einige gemeinsame Attribute und Verhaltensweisen wie Kontonummer, Saldo und Zinssatz.
Durch die Verwendung der hierarchischen Vererbung können Sie eine Basisklasse namens Account erstellen, die die gemeinsamen Attribute und Verhaltensweisen enthält, und jeden Kontotyp davon ableiten, um seine einzigartige Funktionalität hinzuzufügen.
Vererbung auf mehreren Ebenen
Die mehrstufige Vererbung in C++ ist eine Art der Vererbung, bei der eine abgeleitete Klasse von einer anderen abgeleiteten Klasse geerbt wird. In diesem Szenario erbt die abgeleitete Klasse alle öffentlichen und geschützten Datenmember und Memberfunktionen ihrer unmittelbar übergeordneten Klasse, die wiederum von ihrer eigenen übergeordneten Klasse erbt, und so weiter.
So können Sie die mehrstufige Vererbung in C++ programmgesteuert implementieren:
// Basisklasse
Klasse Fahrzeug {
öffentlich:
void start() {
std::cout << „Fahrzeug startet“ << std::endl;
}
};
// Zwischenklasse
Klasse Auto : öffentliches Fahrzeug {
öffentlich:
leeres Laufwerk () {
std::cout << „Auto fährt“ << std::endl;
}
};
// Abgeleitete Klasse
Klasse SportsCar : öffentliches Auto {
öffentlich:
void beschleunigen () {
std::cout << „Sportwagen beschleunigt“ << std::endl;
}
};
Wann sollte die mehrstufige Vererbung in C++ verwendet werden?
Verwenden Sie die Vererbung auf mehreren Ebenen, wenn Sie eine abgeleitete Klasse erstellen möchten, die von einer anderen abgeleiteten Klasse erbt und ihre Funktionalität hinzufügt. Stellen Sie sich zum Beispiel ein Softwaresystem vor, das unterschiedliche Fahrzeugtypen wie Autos, Lastwagen und Motorräder erfordert. Diese Fahrzeugtypen haben einige gemeinsame Eigenschaften und Verhaltensweisen wie Geschwindigkeit, Beschleunigung und Bremsen.
Durch die Verwendung von Vererbung auf mehreren Ebenen können Sie eine Basisklasse namens Vehicle erstellen, die die gemeinsamen Attribute und Verhaltensweisen enthält, und davon Zwischenklassen wie CarundTruckableiten, um ihre spezifische Funktionalität hinzuzufügen. Anschließend können Sie dieSportsCar-Klasse von der Car-Klasseableiten , um ihre einzigartige Funktionalität hinzuzufügen.
Die hybride Vererbung ist eine Kombination aus zwei oder mehr Vererbungsarten. Auch als virtuelle Vererbung bezeichnet, erbt eine abgeleitete Klasse bei der hybriden Vererbung von mehreren Basisklassen, von denen einige über mehrere Pfade vererbt werden. Dadurch können komplexe Vererbungshierarchien entstehen, deren Verständnis und Verwaltung schwierig sein können.
Sehen Sie sichdie Softwareentwicklungskurse von upGrad an, um sich weiterzubilden.
Hier ist ein Beispiel für hybride Vererbung in C++:
// Basisklasse 1
Klasse Tier {
öffentlich:
virtuelle Leere makeSound () = 0;
};
// Basisklasse 2
Klasse CanFly {
öffentlich:
virtuelle Leere fliegen () = 0;
};
// Basisklasse 3
Klasse CanSwim {
öffentlich:
Virtuelle Leere schwimmen () = 0;
};
// Abgeleitete Klasse
Klasse Fledermaus : öffentliches Tier, öffentliches CanFly {
öffentlich:
void makeSound() überschreiben {
std::cout << „Schrei!“<< std::endl;
}
void fly() überschreiben {
std::cout << „Fledermaus fliegt“ << std::endl;
}
};
// Abgeleitete Klasse
Klasse Pinguin : öffentliches Tier, öffentliches CanSwim {
öffentlich:
void makeSound() überschreiben {
std::cout << „Hooonk!“<< std::endl;
}
void swim() überschreiben {
std::cout << „Pinguin schwimmt“ << std::endl;
}
};
Erkunden Sie unsere beliebten Softwareentwicklungskurse
Master of Science in Informatik von LJMU & IIITB | Caltech CTME Cybersecurity-Zertifikatsprogramm |
Full-Stack-Entwicklungs-Bootcamp | PG-Programm in Blockchain |
Executive PG-Programm in der Full-Stack-Entwicklung | |
Sehen Sie sich unten alle unsere Kurse an | |
Software-Engineering-Kurse |
Wann Hybridvererbung in C++ verwendet werden sollte
Zusätzlich zu den vier zuvor besprochenen Vererbungstypen kann die hybride Vererbung in bestimmten Szenarien nützlich sein, in denen mehrere Vererbungstypen erforderlich sind. Verwenden Sie Hybridvererbung, um die Vorteile mehrerer Vererbungstypen zu kombinieren.
Stellen Sie sich beispielsweise ein Softwaresystem vor, das verschiedene Arten von Tieren erfordert, von denen einige fliegen können, während andere schwimmen können. Sie können Hybridvererbung verwenden, um eine Basisklasse namens Animal zu erstellen und zwei Zwischenklassen, CanFlyundCanSwim, davon abzuleiten. Schließlich können Sie mithilfe der hybriden Vererbung die KlassenBat und Penguinvon beiden Zwischenklassen ableiten . DieBat- Klasse würde von AnimalundCanFlyerben , während diePenguin-Klasse vonAnimalundCanSwimerben würde . Auf diese Weise können Sie verschiedene Arten von Tieren mit einzigartigen Kombinationen von Fähigkeiten erschaffen.
Die hybride Vererbung in C++ kann in komplexen Softwaresystemen nützlich sein, in denen mehrere Arten der Vererbung erforderlich sind. Es können jedoch auch komplexe Vererbungshierarchien entstehen, deren Verständnis und Pflege schwierig sein können. Wie bei anderen Vererbungstypen ist die Auswahl des richtigen Typs für die Anforderungen und Designziele Ihres spezifischen Softwareentwicklungsprojekts von entscheidender Bedeutung.
Lesen Sie unsere beliebten Artikel zur Softwareentwicklung
Schauen Sie sich unserekostenlosen Technologiekurse an , um sich einen Wettbewerbsvorteil zu verschaffen.
Wichtige Dinge, die Sie bei der Verwendung von Vererbung beachten sollten:
Die Vererbung ist zwar ein leistungsfähiger Mechanismus in C++, bei der Implementierung müssen jedoch auch einige Faktoren berücksichtigt werden.
- Vermeiden Sie tiefe Vererbungshierarchien : Tiefe Vererbungshierarchien können zu Code führen, der schwer zu lesen, zu verstehen und zu warten ist.Halten Sie Ihre Vererbungshierarchien so flach wie möglich, um die Lesbarkeit und Wartbarkeit des Codes zu verbessern.
- Verwenden Sie Zugriffsmodifikatoren mit Bedacht: Zugriffsmodifikatoren (öffentlich, geschützt und privat) steuern die Sichtbarkeit von Datenelementen und Elementfunktionen in einer Klasse.Verwenden Sie sie mit Bedacht, um zu vermeiden, dass Implementierungsdetails preisgegeben werden, die außerhalb der Klasse nicht sichtbar sein sollten.
- Diamond-Vererbung vermeiden: Diamond-Vererbung tritt auf, wenn eine Klasse von zwei Klassen erbt, die von derselben Basisklasse erben.Dies kann zu Mehrdeutigkeiten führen und wird im Allgemeinen am besten vermieden.
- Vermeiden Sie eine übermäßige Verwendung der Vererbung: Obwohl die Vererbung nützlich sein kann, ist es wichtig, eine übermäßige Verwendung zu vermeiden.In einigen Fällen können Kompositions- oder andere Designmuster die bessere Wahl sein.
Entdecken Sie unsere kostenlosen Kurse zur Softwareentwicklung
Grundlagen des Cloud-Computing | JavaScript-Grundlagen von Grund auf neu | Datenstrukturen und Algorithmen |
Blockchain-Technologie | Reagieren für Anfänger | Core-Java-Grundlagen |
Java | Node.js für Anfänger | Fortgeschrittenes JavaScript |
Wegbringen
Zusammenfassend lässt sich sagen, dass Vererbung ein entscheidendes Konzept in der C++-Programmierung ist, das jeder Programmierstudent beherrschen sollte. Indem Sie die verschiedenen Arten der Vererbung und ihre Anwendungsfälle verstehen, können Sie effizienten, organisierten und wartbaren Code erstellen und so ein besserer Softwareentwickler werden.
Wenn Sie diesen Artikel interessant fanden, können Sie Ihr Wissen über Softwareentwicklung weiter vertiefen, indem Sie sich für das DevOps-Zertifizierungsprogramm von upGrad anmelden , das in Zusammenarbeit mit IIIT Bangalore angeboten wird. Dieses Programm deckt verschiedene Aspekte der Softwareentwicklung ab, einschließlich Codierung, Tests und Bereitstellung, und kann Ihnen dabei helfen, ein erfahrener Softwareentwickler in der Branche zu werden.
Warum ist Vererbung in der C++-Programmierung von Bedeutung?
Durch die Verwendung von Vererbung können Programmierer Zeit und Mühe bei der Softwareentwicklung sparen, um komplexe Softwaresysteme auf organisierte Weise aufzubauen. Da Programmierer daran arbeiten, besser lesbare Codes zu erstellen, vereinfacht sich der Codierungsprozess um ein Vielfaches.
Was sind die wichtigen Dinge, die bei der Verwendung der Vererbung in der C++-Programmierung zu beachten sind?
Bei der Verwendung von Vererbung in der C++-Programmierung ist es wichtig, einige wichtige Dinge im Auge zu behalten, wie z. B. die Vermeidung tiefer Vererbungshierarchien, die kluge Verwendung von Zugriffsmodifikatoren, die Vermeidung von Rautenvererbung und die Vermeidung einer übermäßigen Vererbung.
Welche Art von Vererbung sollte ich für mein Softwareentwicklungsprojekt verwenden?
Die Auswahl des richtigen Vererbungstyps hängt von den Anforderungen Ihres spezifischen Softwareentwicklungsprojekts und den Entwurfszielen ab. Die Auswahl aus verschiedenen Vererbungsarten hängt ganz von Ihren Projektanforderungen ab. Machen Sie daher eine detaillierte Analyse, bevor Sie damit fortfahren.