Gränssnitt i c++

Gränssnitt i c++

Abstrakta klasser är sättet att uppnå abstraktion i C++. Abstraktion i C++ är processen för att dölja de interna detaljerna och endast visa funktionalitet. Abstraktion kan uppnås på två sätt:

  1. Abstrakt klass
  2. Gränssnitt

Abstrakt klass och gränssnitt kan båda ha abstrakta metoder som är nödvändiga för abstraktion.

Varför behöver vi en abstrakt klass?

Låt oss förstå detta med hjälp av ett verkligt exempel. Låt oss säga att vi har en klass, djur sover, djuret gör ett ljud, etc. För närvarande överväger jag bara dessa två beteenden och skapar en klass Djur med två funktioner sound() och sleeping() .

Nu vet vi att djurläten är olika katt säger "jau", hunden säger "woof". Så vilken implementering ger jag i Animal klass för funktionen sound() , det enda och korrekta sättet att göra detta skulle vara att göra denna funktion rent abstrakt så att jag inte behöver ge implementering i Animal-klassen utan alla klasser som ärver Animal-klassen måste ge implementering till denna funktion. På så sätt säkerställer jag att alla djur har ljud men att de har sitt unika ljud.

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

Utdata:

drawing rectangle...
drawing circle...

Regler för abstrakt klass

  1. Som vi har sett att alla klasser som har en ren virtuell funktion är en abstrakt klass.
  2. Vi kan skapa pekare och referens av abstrakta basklasspunkter till instansen av en underordnad klass.
  3. En abstrakt klass kan ha konstruktorer.
  4. Om den härledda klassen inte implementerar den rena virtuella funktionen för den överordnade klassen blir den härledda klassen abstrakt.
Tidigare:Inkapsling i c ++Nästa:Vänklass och vänfunktion i c ++PrevHomeNext


No