Interfejsy w c++

Interfejsy w c++

Klasy abstrakcyjne są sposobem na osiągnięcie abstrakcji w C++. Abstrakcja w C++ to proces ukrywania wewnętrznych szczegółów i pokazywania tylko funkcjonalności. Abstrakcję można osiągnąć na dwa sposoby:

  1. Klasa abstrakcyjna
  2. Interfejs

Klasa abstrakcyjna i interfejs mogą mieć abstrakcyjne metody, które są niezbędne do abstrakcji.

Dlaczego potrzebujemy klasy abstrakcyjnej?

Zrozummy to na przykładzie z życia wziętego. Powiedzmy, że mamy klasę, zwierzę śpi, zwierzę wydaje dźwięk itd. Na razie rozważam tylko te dwa zachowania i tworzę klasę Animal z dwiema funkcjami sound() i sleeping() .

Teraz wiemy, że odgłosy zwierząt są inne. Kot mówi „miau”, pies mówi „hau”. Więc jaką implementację podaję w Animal klasa dla funkcji sound() , jedynym i poprawnym sposobem na zrobienie tego byłoby uczynienie tej funkcji czystą abstrakcją, tak aby nie musiałem podawać implementacji w klasie Animal, ale wszystkie klasy, które dziedziczą klasę Animal, muszą dać implementację tej funkcji. W ten sposób zapewniam, że wszystkie Zwierzęta mają dźwięk, ale mają swój unikalny dźwięk.

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

Wyjście:

drawing rectangle...
drawing circle...

Zasady klasy abstrakcyjnej

  1. Jak widzieliśmy, każda klasa, która ma czystą funkcję wirtualną jest klasą abstrakcyjną.
  2. Możemy utworzyć wskaźnik i referencję bazowej klasy abstrakcyjnej wskazuje na instancję klasy potomnej.
  3. Klasa abstrakcyjna może mieć konstruktory.
  4. Jeżeli klasa pochodna nie implementuje czystej funkcji wirtualnej klasy nadrzędnej, wówczas klasa pochodna staje się abstrakcyjna.
Poprzednio:Enkapsulacja w c ++Dalej:Klasa i funkcja przyjaciela w c ++PrevHomeNext


No