Interfacce in c++

Interfacce in c++

Le classi astratte sono il modo per ottenere l'astrazione in C++. L'astrazione in C++ è il processo per nascondere i dettagli interni e mostrare solo le funzionalità. L'astrazione può essere ottenuta in due modi:

  1. Classe astratta
  2. Interfaccia

Sia la classe astratta che l'interfaccia possono avere metodi astratti necessari per l'astrazione.

Perché abbiamo bisogno di una classe astratta?

Capiamolo con l'aiuto di un esempio di vita reale. Diciamo che abbiamo una classe, l'animale dorme, l'animale emette un suono, ecc. Per ora sto considerando solo questi due comportamenti e sto creando una classe Animal con due funzioni sound() e sleeping() .

Ora, sappiamo che i suoni degli animali sono diversi, il gatto dice "miagolio", il cane dice "bau". Quindi quale implementazione fornisco in Animal classe per la funzione sound() , l'unico e corretto modo per farlo sarebbe rendere questa funzione pura astratta in modo che non sia necessario fornire l'implementazione nella classe Animal ma tutte le classi che ereditano la classe Animal devono implementare questa funzione. In questo modo mi assicuro che tutti gli animali abbiano il suono ma abbiano il loro suono unico.

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

Uscita:

drawing rectangle...
drawing circle...

Regole della classe astratta

  1. Come abbiamo visto, qualsiasi classe che abbia una funzione virtuale pura è una classe astratta.
  2. Possiamo creare puntatori e riferimenti di classi astratte di base puntano all'istanza di una classe figlia.
  3. Una classe astratta può avere costruttori.
  4. Se la classe derivata non implementa la pura funzione virtuale della classe genitore, la classe derivata diventa astratta.
In precedenza:incapsulamento in c ++Next:classe Friend e funzione friend in c ++PrevHomeNext


No