Heim häufiges Problem Was ist die Standardvererbungsmethode für abgeleitete Klassen?

Was ist die Standardvererbungsmethode für abgeleitete Klassen?

Aug 21, 2019 pm 01:51 PM
Abgeleitete Klasse 继承

Was ist die Standardvererbungsmethode für abgeleitete Klassen?

Lassen Sie mich zunächst Ihre Fragen beantworten: Es gibt zwei Standardvererbungsmethoden für abgeleitete Klassen. Verwenden Sie „class“, um eine abgeleitete Klasse zu definieren. Die Standardvererbungsmethode ist „privat“. Verwenden Sie „struct“, um eine abgeleitete Klasse zu definieren. Die Standardvererbungsmethode ist „public“.

Empfohlenes Tutorial: C++-Video-Tutorial

Vererbung ist das zweite Hauptmerkmal der objektorientierten Programmierung Erstellen neuer Klassen basierend auf vorhandenen Klassen. Die neue Klasse kann die Datenelemente und Elementfunktionen der vorhandenen Klasse erben, ihre eigenen eindeutigen Datenelemente und Elementfunktionen hinzufügen und die Elementfunktionen in der vorhandenen Klasse neu definieren. Der Einsatz von Klassenvererbung und -ableitung zur Erzielung einer höheren Wiederverwendbarkeit von Code entspricht den Vorstellungen moderner Softwareentwicklung.

Die C++-Sprache unterstützt sowohl Einzelvererbung als auch Mehrfachvererbung. Einfache Vererbung bedeutet, dass eine abgeleitete Klasse nur von einer Basisklasse erbt. Mehrfachvererbung bedeutet, dass eine abgeleitete Klasse gleichzeitig von zwei oder mehr Basisklassen erbt. Java unterstützt nur die Einzelvererbung.

1. Abgeleitete Klasse

Das Definitionsformat der abgeleiteten Klasse ist wie folgt:

      class <派生类名>:[继承方式]<基类名1>
            [,[继承方式]<基类名2>,...,[继承方式]<基类名n>]
      {
              <派生类新增的数据成员和成员函数定义>
      };
Nach dem Login kopieren

Beschreibung :

(1) Das Schlüsselwort zum Definieren einer abgeleiteten Klasse kann class oder struct sein. Der Unterschied zwischen den beiden ist: Verwenden Sie class, um eine abgeleitete Klasse zu definieren, die Standardvererbungsmethode ist privat, verwenden Sie struct Um eine abgeleitete Klasse zu definieren, ist die Standardvererbungsmethode öffentlich. Die Standardattribute neu hinzugefügter Mitglieder sind ebenfalls Klassen, die privaten Attributen entsprechen, und Strukturen, die öffentlichen Attributen entsprechen.

(2) Die beiden Arten von Funktionen, die eine Basisklasse nicht von einer abgeleiteten Klasse erben kann, sind Konstruktoren und Destruktoren.

2. Zugriff auf Attribute von Basisklassenmitgliedern in abgeleiteten Klassen unter 3 Vererbungsmethoden

继承描述符父public成员父protected成员父private成员
public子public成员子protected成员 -
protected子protected成员子protected成员 -
private子private成员子private成员 -

Verwenden Sie den folgenden Code, um es kurz zu verstehen:

#include "stdafx.h"
#include<iostream>
 using namespace std; 
 class Base
 {
 private:
     int priData;
 9 protected:
    int proData;
 public:
    int pubData;
 };

class D1:private Base//私有继承
 {
    void f1()
     {
        //priData=1;//基类private成员在派生类中不可直接访问
        proData=2;//基类的protected成员在派生类中为private访问属性
         pubData=3;//基类的public成员在派生类中为private访问属性
    }
 };
 class D2:protected Base//保护继承
 {
     void f2()
    {
         //priData=1;//基类private成员在派生类中不可直接访问
        proData=2;//基类的protected成员在派生类中为protected访问属性
         pubData=3;//基类的public成员在派生类中为protected访问属性
     }
 };
 
 class D3:public Base//公有继承
 {
    void f3()
     {
        //priData=1;//基类private成员在派生类中不可直接访问
         proData=2;//基类的protected成员在派生类中为protected访问属性
        pubData=3;//基类的public成员在派生类中为public访问属性
     }
 };
 
 int main()
 {
     Base obj;
    //obj.priData=1;//对象不可访问Base类中private成员
     //obj.proData=2;//对象不可访问Base类中protected成员
    obj.pubData=3;
   D1 objD1;
    //objD1.pubData=3;//private属性,不可访问
    D2 objD2;
     //objD2.pubData=3;//protected属性,不可访问
    D3 objD3;
     objD3.pubData=3;//public属性,可以访问
    return 0;
}
Nach dem Login kopieren

Obwohl die privaten Mitgliedsfunktionen der Basisklasse in den Mitgliedsfunktionen der abgeleiteten Klasse nicht direkt zugänglich sind, können die Mitgliedsfunktionen der abgeleiteten Klasse indirekt auf diese Mitglieder zugreifen, indem sie die geerbten Funktionen der Basisklasse aufrufen. Wenn eine Funktion der Basisklasse geerbt wird und ein öffentliches Mitglied in der abgeleiteten Klasse bleibt, kann sie direkt über das abgeleitete Klassenobjekt aufgerufen werden.

Werfen wir zunächst einen Blick auf die Zugriffsattribute und Funktionen von Klassenmitgliedern:

访问属性作用
private只允许该类的成员函数及友元函数访问,不能被其他函数访问
protected既允许该类的成员函数及友元函数访问,也允许其派生类的成员函数访问
public既允许该类的成员函数访问,也允许类外部的其他函数访问

Nun, verstehen Sie weiterhin durch den Code:

#include "stdafx.h"
 #include<iostream>
 using namespace std;
 
class Base
 {
 private:
     int priData;
 protected:
    int proData;
 public:
     int pubData;
 //在类的定义中不能对数据成员进行初始化
     void SetData()//为基类中的数据成员赋值
     {
         priData=100;
        proData=200;
         pubData=300;
    }
    void Print()
     {
        cout<<"priData="<<priData<<endl;
       cout<<"proData="<<proData<<endl;
        cout<<"pubData="<<pubData<<endl;
     }
 };

 class Derived:public Base
 {
 public:
     void ChangeData()
     {
         SetData();
         proData=12;//在派生类的成员函数类可以访问基类的非私有成员                   
     }
 };

 int main()
 {
    Base b;
     b.SetData();
     b.Print();
 
     Derived d1;
     d1.ChangeData();
     d1.pubData=13;
    d1.Print();
     
     return 0;
 }
Nach dem Login kopieren

Die Ergebnisse der Programmausführung lauten wie folgt:

Was ist die Standardvererbungsmethode für abgeleitete Klassen?

Das obige ist der detaillierte Inhalt vonWas ist die Standardvererbungsmethode für abgeleitete Klassen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn

Heiße KI -Werkzeuge

Undresser.AI Undress

Undresser.AI Undress

KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover

AI Clothes Remover

Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool

Undress AI Tool

Ausziehbilder kostenlos

Clothoff.io

Clothoff.io

KI-Kleiderentferner

Video Face Swap

Video Face Swap

Tauschen Sie Gesichter in jedem Video mühelos mit unserem völlig kostenlosen KI-Gesichtstausch-Tool aus!

Heiße Werkzeuge

Notepad++7.3.1

Notepad++7.3.1

Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version

SublimeText3 chinesische Version

Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1

Senden Sie Studio 13.0.1

Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6

Dreamweaver CS6

Visuelle Webentwicklungstools

SublimeText3 Mac-Version

SublimeText3 Mac-Version

Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

Heiße Themen

Java-Tutorial
1662
14
PHP-Tutorial
1261
29
C#-Tutorial
1234
24
Detaillierte Erläuterung der C++-Funktionsvererbung: Wie werden „Basisklassenzeiger' und „abgeleitete Klassenzeiger' bei der Vererbung verwendet? Detaillierte Erläuterung der C++-Funktionsvererbung: Wie werden „Basisklassenzeiger' und „abgeleitete Klassenzeiger' bei der Vererbung verwendet? May 01, 2024 pm 10:27 PM

Verwenden Sie bei der Funktionsvererbung „Basisklassenzeiger“ und „abgeleitete Klassenzeiger“, um den Vererbungsmechanismus zu verstehen: Wenn der Basisklassenzeiger auf das abgeleitete Klassenobjekt zeigt, wird eine Aufwärtstransformation durchgeführt und nur auf die Mitglieder der Basisklasse zugegriffen. Wenn ein abgeleiteter Klassenzeiger auf ein Basisklassenobjekt zeigt, wird eine Abwärtsumwandlung durchgeführt (unsicher) und muss mit Vorsicht verwendet werden.

Ausführliche Erklärung der C++-Funktionsvererbung: Wie kann man Fehler bei der Vererbung debuggen? Ausführliche Erklärung der C++-Funktionsvererbung: Wie kann man Fehler bei der Vererbung debuggen? May 02, 2024 am 09:54 AM

Tipps zum Debuggen von Vererbungsfehlern: Stellen Sie sicher, dass die Vererbungsbeziehungen korrekt sind. Verwenden Sie den Debugger, um den Code schrittweise durchzugehen und Variablenwerte zu untersuchen. Stellen Sie sicher, dass Sie den virtuellen Modifikator richtig verwenden. Untersuchen Sie das Problem der Vererbungsdiamanten, das durch versteckte Vererbung verursacht wird. Suchen Sie nach nicht implementierten rein virtuellen Funktionen in abstrakten Klassen.

Beheben Sie den PHP-Fehler: Probleme beim Erben der übergeordneten Klasse Beheben Sie den PHP-Fehler: Probleme beim Erben der übergeordneten Klasse Aug 17, 2023 pm 01:33 PM

Beheben von PHP-Fehlern: Probleme bei der Vererbung übergeordneter Klassen In PHP ist die Vererbung ein wichtiges Merkmal der objektorientierten Programmierung. Durch Vererbung können wir vorhandenen Code wiederverwenden und ihn erweitern und verbessern, ohne den ursprünglichen Code zu ändern. Obwohl Vererbung in der Entwicklung weit verbreitet ist, können beim Erben von einer übergeordneten Klasse manchmal Fehler auftreten. Dieser Artikel konzentriert sich auf die Lösung häufiger Probleme, die beim Erben von einer übergeordneten Klasse auftreten, und stellt entsprechende Codebeispiele bereit. Frage 1: Die übergeordnete Klasse wird beim Erben der übergeordneten Klasse nicht gefunden, wenn dies nicht der Fall ist

Berechnen Sie Zinsen für Festgelder (FDs) und Festgelder (RDs) mithilfe eines geerbten Java-Programms Berechnen Sie Zinsen für Festgelder (FDs) und Festgelder (RDs) mithilfe eines geerbten Java-Programms Aug 20, 2023 pm 10:49 PM

Vererbung ist ein Konzept, das es uns ermöglicht, von einer anderen Klasse auf die Eigenschaften und das Verhalten einer Klasse zuzugreifen. Die Klasse, die Methoden und Mitgliedsvariablen erbt, wird als Superklasse oder übergeordnete Klasse bezeichnet, und die Klasse, die diese Methoden und Mitgliedsvariablen erbt, wird als Unterklasse oder Unterklasse bezeichnet. In Java verwenden wir das Schlüsselwort „extends“, um eine Klasse zu erben. In diesem Artikel besprechen wir ein Java-Programm zur Berechnung von Zinsen für Fest- und Festgelder mittels Erbschaft. Erstellen Sie zunächst diese vier Java-Dateien – Acnt.java – in Ihrer lokalen Computer-IDE. Diese Datei enthält eine abstrakte Klasse „Acnt“, die zum Speichern von Kontodetails wie Zinssatz und Betrag verwendet wird. Es wird auch eine abstrakte Methode „calcIntrst“ mit dem Parameter „amnt“ zur Berechnung geben

Ausführliche Erklärung der C++-Funktionsvererbung: Wie versteht man die Beziehung „is-a' und „has-a' bei der Vererbung? Ausführliche Erklärung der C++-Funktionsvererbung: Wie versteht man die Beziehung „is-a' und „has-a' bei der Vererbung? May 02, 2024 am 08:18 AM

Detaillierte Erläuterung der C++-Funktionsvererbung: Beherrschen Sie die Beziehung zwischen „is-a“ und „has-a“ Was ist Funktionsvererbung? Funktionsvererbung ist eine Technik in C++, die in einer abgeleiteten Klasse definierte Methoden mit in einer Basisklasse definierten Methoden verknüpft. Es ermöglicht abgeleiteten Klassen, auf Methoden der Basisklasse zuzugreifen und diese zu überschreiben, wodurch die Funktionalität der Basisklasse erweitert wird. „Ist-ein“- und „Hat-ein“-Beziehungen Bei der Funktionsvererbung bedeutet die „Ist-ein“-Beziehung, dass die abgeleitete Klasse ein Untertyp der Basisklasse ist, d. h. die abgeleitete Klasse „erbt“ die Merkmale und das Verhalten von die Basisklasse. Die „has-a“-Beziehung bedeutet, dass die abgeleitete Klasse einen Verweis oder Zeiger auf das Basisklassenobjekt enthält, d. h. die abgeleitete Klasse „besitzt“ das Basisklassenobjekt. SyntaxDas Folgende ist die Syntax für die Implementierung der Funktionsvererbung: classDerivedClass:pu

Verwendung von Polymorphismus und Vererbung in PHP zur Verarbeitung von Datentypen Verwendung von Polymorphismus und Vererbung in PHP zur Verarbeitung von Datentypen Jul 15, 2023 pm 07:41 PM

Verwendung von Polymorphismus und Vererbung zur Verarbeitung von Datentypen in PHP Einführung: In PHP sind Polymorphismus und Vererbung zwei wichtige Konzepte der objektorientierten Programmierung (OOP). Durch den Einsatz von Polymorphismus und Vererbung können wir flexibler mit unterschiedlichen Datentypen umgehen. In diesem Artikel wird die Verwendung von Polymorphismus und Vererbung für den Umgang mit Datentypen in PHP vorgestellt und deren praktische Anwendung anhand von Codebeispielen gezeigt. 1. Das Grundkonzept der Vererbung Vererbung ist ein wichtiges Konzept in der objektorientierten Programmierung. Sie ermöglicht es uns, eine Klasse zu erstellen, die die Eigenschaften und Methoden der übergeordneten Klasse erben kann.

Wie erzwinge ich die Vererbung der endgültigen Proxy-Klasse mit Java? Wie erzwinge ich die Vererbung der endgültigen Proxy-Klasse mit Java? Sep 06, 2023 pm 01:27 PM

Wie erzwinge ich die Vererbung der endgültigen Proxy-Klasse mit Java? In Java wird das Schlüsselwort final zum Ändern von Klassen, Methoden und Variablen verwendet, um anzuzeigen, dass sie nicht vererbt, überschrieben oder geändert werden können. In einigen Fällen müssen wir jedoch möglicherweise die Vererbung einer letzten Klasse erzwingen, um bestimmte Anforderungen zu erfüllen. In diesem Artikel wird erläutert, wie das Proxy-Muster zum Implementieren einer solchen Funktionalität verwendet wird. Das Proxy-Muster ist ein strukturelles Entwurfsmuster, das es uns ermöglicht, ein Zwischenobjekt (Proxy-Objekt) zu erstellen, das das Verhalten eines anderen Objekts (Proxy-Objekt) steuern kann.

Verpackungstechnologie und Anwendung in PHP Verpackungstechnologie und Anwendung in PHP Oct 12, 2023 pm 01:43 PM

Kapselungstechnologie und Anwendungskapselung in PHP sind ein wichtiges Konzept in der objektorientierten Programmierung. Sie beziehen sich auf die gemeinsame Kapselung von Daten und Operationen auf Daten, um eine einheitliche Zugriffsschnittstelle für externe Programme bereitzustellen. In PHP kann die Kapselung durch Zugriffskontrollmodifikatoren und Klassendefinitionen erreicht werden. In diesem Artikel werden die Kapselungstechnologie in PHP und ihre Anwendungsszenarien vorgestellt und einige spezifische Codebeispiele bereitgestellt. 1. Gekapselte Zugriffskontrollmodifikatoren In PHP wird die Kapselung hauptsächlich durch Zugriffskontrollmodifikatoren erreicht. PHP bietet drei Zugriffskontrollmodifikatoren: