Grænseflader i c++

Grænseflader i c++

Abstrakte klasser er vejen til at opnå abstraktion i C++. Abstraktion i C++ er processen til at skjule de interne detaljer og kun vise funktionalitet. Abstraktion kan opnås på to måder:

  1. Abstrakt klasse
  2. Grænseflade

Abstrakt klasse og interface kan begge have abstrakte metoder, som er nødvendige for abstraktion.

Hvorfor har vi brug for en abstrakt klasse?

Lad os forstå dette ved hjælp af et eksempel fra det virkelige liv. Lad os sige, at vi har en klasse, dyret sover, dyret laver en lyd osv. Indtil videre overvejer jeg kun disse to adfærdsmønstre og laver en klasse Dyr med to funktioner sound() og sleeping() .

Nu ved vi, at dyrelyde er forskellige, kat siger "miav", hunden siger "woof". Så hvilken implementering giver jeg i Animal klasse for funktionen sound() , den eneste og korrekte måde at gøre dette på ville være at gøre denne funktion rent abstrakt, så jeg behøver ikke give implementering i Animal-klassen, men alle klasser, der arver Animal-klassen, skal give implementering til denne funktion. På denne måde sikrer jeg, at alle dyrene har lyd, men de har deres unikke lyd.

#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;  
}

Output:

drawing rectangle...
drawing circle...

Regler for abstrakt klasse

  1. Som vi har set, at enhver klasse, der har en ren virtuel funktion er en abstrakt klasse.
  2. Vi kan oprette pointer og reference af abstrakte basisklassepunkter til forekomsten af ​​en underklasse.
  3. En abstrakt klasse kan have konstruktører.
  4. Hvis den afledte klasse ikke implementerer den rene virtuelle funktion af den overordnede klasse, bliver den afledte klasse abstrakt.
Tidligere:Indkapsling i c ++Næste:Venneklasse og vennefunktion i c ++PrevHomeNext


No