Unterschied zwischen öffentlicher, privater und geschützter Vererbung in C++

Muhammad Adil 11 Dezember 2023
  1. Basis- und abgeleitete Klassen in C++
  2. Öffentliche Vererbung in C++
  3. Geschützte Vererbung in C++
  4. Private Vererbung in C++
Unterschied zwischen öffentlicher, privater und geschützter Vererbung in C++

Vererbung ist ein grundlegendes Konzept in der objektorientierten Programmierung; Es hilft Ihnen, die Funktionalität einer Klasse zu erweitern. Durch die Vererbung können Sie den bereits geschriebenen und getesteten Code in einer Klasse wiederverwenden und in einer anderen Klasse verwenden, was Zeit spart, Fehler reduziert und das Design Ihres Programms vereinfacht.

Vererbung kann als Ist-ein-Beziehung zwischen Klassen bezeichnet werden. Wenn wir zum Beispiel sagen, dass ein Auto ein Auto ist, dann sagen wir, dass alle Autos Autos sind und alle Autos Autos sind.

In diesem Artikel werden wir die folgenden drei Arten der Vererbung besprechen:

  1. Öffentliches Erbe
  2. Privater Nachlass
  3. Geschützte Vererbung

Aber bevor wir die Arten der Vererbung besprechen, werden wir das Konzept der Basis- und abgeleiteten Klassen in C++ besprechen.

Basis- und abgeleitete Klassen in C++

Basis- und abgeleitete Klassen werden verwendet, um eine Hierarchie von Objekten zu erstellen. Die ursprüngliche Klasse wird als Basisklasse bezeichnet, während andere geerbte Klassen als abgeleitete Klassen betrachtet werden.

Die Basisklasse stellt eine Standardimplementierung für alle Member bereit, die bei Bedarf von abgeleiteten Klassen überschrieben werden kann.

Eine abgeleitete Klasse kann auf alle nicht privaten Mitglieder ihrer Basisklasse zugreifen. Um zu verhindern, dass Elementfunktionen von abgeleiteten Klassen auf Elemente der Basisklasse zugreifen, sollten diese Elemente der Basisklasse daher in der Basisklasse privat gemacht werden.

Öffentliche Vererbung in C++

Öffentliche Vererbung ist eine Art der Vererbung, bei der eine Klasse die Merkmale oder Eigenschaften einer anderen Klasse erwirbt. Es kann als eine Implementierung der ist-ein-Beziehung angesehen werden, bei der die erbende Klasse als Erweiterung oder Spezialisierung der geerbten betrachtet wird.

Wenn eine Klasse von einer öffentlichen Basisklasse abgeleitet wird, werden die öffentlichen Member der Basisklasse zu den öffentlichen Membern der abgeleiteten Klasse, und die geschützten Member der Basisklasse werden zu den geschützten Membern der abgeleiteten Klasse. Die privaten Member einer Basisklasse sind von einer abgeleiteten Klasse nie ohne Weiteres erreichbar, sie können jedoch über Aufrufe an die öffentlichen und geschützten Member der Basisklasse abgerufen werden.

#include <iostream>
using namespace std;
class Demo {
 private:
  int x = 56;

 protected:
  int y = 27;

 public:
  int z = 67;
  int getX() { return x; }
};
class PublicInheritance : public Demo {
 public:
  int getY() { return y; }
};
int main() {
  PublicInheritance sam;
  cout << "Private member = " << sam.getX() << endl;
  cout << "Protected member= " << sam.getY() << endl;
  cout << "Public member= " << sam.z << endl;
  return 0;
}

Klicken Sie hier, um die Funktion des Codes wie oben erwähnt zu überprüfen.

Geschützte Vererbung in C++

Geschützte Vererbung ist eine Form der Vererbung, bei der die Basisklasse geschützt ist. Das bedeutet, dass die abgeleitete Klasse alle öffentlichen und geschützten Mitglieder der Basisklasse als geschützte Mitglieder haben wird.

Das Ableiten von einer geschützten Basisklasse hat in bestimmten Szenarien seine Vorteile. Dies wäre beispielsweise eine geeignete Lösung, wenn Sie eine Reihe verwandter Klassen erstellen, diese aber nicht öffentlich machen möchten, da sie nur für den internen Gebrauch bestimmt sind.

#include <iostream>
using namespace std;
class Demo {
 private:
  int x = 56;

 protected:
  int y = 27;

 public:
  int z = 67;
  int getX() { return x; }
};
class ProtectedInheritance : protected Demo {
 public:
  int getY() { return y; }
  int getZ() { return z; }
};
int main() {
  ProtectedInheritance sam;

  cout << "Protected member= " << sam.getY() << endl;
  cout << "Public member= " << sam.getZ() << endl;
  return 0;
}

Klicken Sie hier, um die Funktion des Codes wie oben erwähnt zu überprüfen.

Private Vererbung in C++

Private Vererbung liegt vor, wenn die abgeleitete Klasse von einer privaten Basisklasse erbt. Das bedeutet, dass alle öffentlichen oder geschützten Basisklassenmember zu privaten Membern der abgeleiteten Klasse werden.

Dies kann nützlich sein, wenn Sie eine Unterklasse erstellen möchten, die nur einige der Funktionen ihrer Oberklasse bereitstellt.

#include <iostream>
using namespace std;
class Demo {
 private:
  int x = 56;

 protected:
  int y = 27;

 public:
  int z = 67;
  int getX() { return x; }
};
class PrivateInheritance : private Demo {
 public:
  int getY() { return y; }
  int getZ() { return z; }
};
int main() {
  PrivateInheritance sam;

  cout << "Protected member= " << sam.getY() << endl;
  cout << "Public member= " << sam.getZ() << endl;
  return 0;
}

Klicken Sie hier, um die Funktion des Codes wie oben erwähnt zu überprüfen.

Muhammad Adil avatar Muhammad Adil avatar

Muhammad Adil is a seasoned programmer and writer who has experience in various fields. He has been programming for over 5 years and have always loved the thrill of solving complex problems. He has skilled in PHP, Python, C++, Java, JavaScript, Ruby on Rails, AngularJS, ReactJS, HTML5 and CSS3. He enjoys putting his experience and knowledge into words.

Facebook

Verwandter Artikel - C++ Inheritance