Schnittstellen in c++

Schnittstellen in c++

Abstrakte Klassen sind der Weg, um in C++ Abstraktion zu erreichen. Abstraktion in C++ ist der Prozess, um die internen Details zu verbergen und nur die Funktionalität anzuzeigen. Abstraktion kann auf zwei Arten erreicht werden:

  1. Abstrakte Klasse
  2. Schnittstelle

Abstrakte Klasse und Schnittstelle können beide abstrakte Methoden haben, die für die Abstraktion notwendig sind.

Warum brauchen wir eine abstrakte Klasse?

Lassen Sie uns dies anhand eines realen Beispiels verstehen. Nehmen wir an, wir haben eine Klasse, das Tier schläft, das Tier macht ein Geräusch usw. Im Moment betrachte ich nur diese beiden Verhaltensweisen und erstelle eine Klasse Tier mit zwei Funktionen sound() und sleeping() .

Nun wissen wir, dass Tierlaute anders sind, die Katze sagt „miau“, der Hund sagt „wuff“. Welche Implementierung gebe ich also in Animal an Klasse für die Funktion sound() , wäre der einzige und richtige Weg, dies zu tun, diese Funktion rein abstrakt zu machen, so dass ich keine Implementierung in der Animal-Klasse geben muss, aber alle Klassen, die die Animal-Klasse erben, diese Funktion implementieren müssen. Auf diese Weise stelle ich sicher, dass alle Tiere klingen, aber sie haben ihren einzigartigen Klang.

#include <iostream>  
using namespace std;  
 class Shape    
{    
    public:   
    virtual void draw()=0;    
};    
 class Rectangle : Shape    
{    
    public:  
     void draw()    
    {    
        cout < <"drawing rectangle..." < <endl;    
    }    
};    
class Circle : Shape    
{    
    public:  
     void draw()    
    {    
        cout <<"drawing circle..." < <endl;    
    }    
};    
int main( ) {  
    Rectangle rec;  
    Circle cir;  
    rec.draw();    
    cir.draw();   
   return 0;  
}

Ausgabe:

drawing rectangle...
drawing circle...

Regeln der abstrakten Klasse

  1. Wie wir gesehen haben, hat jede Klasse eine reine virtuelle Funktion ist eine abstrakte Klasse.
  2. Wir können Zeiger und Referenzen von abstrakten Basisklassenpunkten auf die Instanz einer untergeordneten Klasse erstellen.
  3. Eine abstrakte Klasse kann Konstruktoren haben.
  4. Wenn die abgeleitete Klasse nicht die rein virtuelle Funktion der Elternklasse implementiert, wird die abgeleitete Klasse abstrakt.
Bisher:Kapselung in c ++Next:Friend-Klasse und Friend-Funktion in c ++PrevHomeNext


No