Grensesnitt i c++

 C Programming >> C C# Program >  >> C++
Grensesnitt i c++

Abstrakte klasser er måten å oppnå abstraksjon i C++. Abstraksjon i C++ er prosessen for å skjule de interne detaljene og kun vise funksjonalitet. Abstraksjon kan oppnås på to måter:

  1. Abstrakt klasse
  2. Grensesnitt

Abstrakt klasse og grensesnitt kan begge ha abstrakte metoder som er nødvendige for abstraksjon.

Hvorfor trenger vi en abstrakt klasse?

La oss forstå dette ved hjelp av et ekte eksempel. La oss si at vi har en klasse, dyret sover, dyret lager lyd osv. Foreløpig vurderer jeg bare disse to atferdene og lager en klasse dyr med to funksjoner sound() og sleeping() .

Nå vet vi at dyrelyder er forskjellige katten sier "mjau", hunden sier "woff". Så hvilken implementering gir jeg i Animal klasse for funksjonen sound() , den eneste og riktige måten å gjøre dette på ville være å gjøre denne funksjonen ren abstrakt slik at jeg ikke trenger å gi implementering i Animal-klassen, men alle klassene som arver Animal-klassen må gi implementering til denne funksjonen. På denne måten sikrer jeg at alle dyrene har lyd, men at de har sin unike 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;  
}

Utgang:

drawing rectangle...
drawing circle...

Regler for abstrakt klasse

  1. Som vi har sett at enhver klasse som har en ren virtuell funksjon er en abstrakt klasse.
  2. Vi kan lage peker og referanse for abstrakte basisklassepunkter til forekomsten av en barneklasse.
  3. En abstrakt klasse kan ha konstruktører.
  4. Hvis den avledede klassen ikke implementerer den rene virtuelle funksjonen til den overordnede klassen, blir den avledede klassen abstrakt.
Tidligere:Innkapsling i c ++Neste:Venneklasse og vennefunksjon i c ++PrevHomeNext


No