Interfaces in c++

Interfaces in c++

Abstracte klassen zijn de manier om abstractie te bereiken in C ++. Abstractie in C++ is het proces om de interne details te verbergen en alleen functionaliteit te tonen. Abstractie kan op twee manieren worden bereikt:

  1. Abstracte les
  2. Interface

Abstracte klasse en interface kunnen beide abstracte methoden hebben die nodig zijn voor abstractie.

Waarom hebben we een abstracte les nodig?

Laten we dit begrijpen aan de hand van een voorbeeld uit de praktijk. Laten we zeggen dat we een klas hebben, het dier slaapt, het dier maakt een geluid, enz. Voor nu overweeg ik alleen deze twee gedragingen en maak ik een klas Dier met twee functies sound() en sleeping() .

Nu weten we dat dierengeluiden anders zijn. Kat zegt "miauw", de hond zegt "inslag". Dus welke implementatie geef ik in Animal class voor de functie sound() , de enige en juiste manier om dit te doen zou zijn om deze functie puur abstract te maken, zodat ik geen implementatie in Animal class hoef te geven, maar alle klassen die Animal class erven, implementatie aan deze functie moeten geven. Op deze manier zorg ik ervoor dat alle dieren geluid hebben, maar ze hebben hun unieke geluid.

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

Uitgang:

drawing rectangle...
drawing circle...

Regels van abstracte klasse

  1. Zoals we hebben gezien dat elke klasse met een pure virtuele functie is een abstracte klasse.
  2. We kunnen een pointer en referentie van abstracte basisklassen maken naar de instantie van een onderliggende klasse.
  3. Een abstracte klasse kan constructors hebben.
  4. Als de afgeleide klasse de pure virtuele functie van de bovenliggende klasse niet implementeert, wordt de afgeleide klasse abstract.
Eerder:Inkapseling in c ++Volgende:Vriendklasse en vriendfunctie in c ++PrevHomeVolgende


No