Czym są interfejsy w C++

Czym Sa Interfejsy W C



Interfejsy, zwane potocznie klasami abstrakcyjnymi, są jedynie źródłem opisu zachowania klasy bez konieczności jej implementacji. W programowaniu w C++ nie ma wbudowanej koncepcji interfejsów. Aby rozpocząć tworzenie interfejsu, musimy najpierw ustanowić klasę abstrakcyjną zawierającą wyłącznie funkcje czysto wirtualne.

Interfejsy w C++ są stosowane przy użyciu klas abstrakcyjnych. Z drugiej strony klasa nazywana jest klasą abstrakcyjną, jeśli co najmniej jedna funkcja wewnątrz klasy jest zadeklarowana jako czysta funkcja wirtualna.

Co to jest czysta funkcja wirtualna

The Czysta funkcja wirtualna oznacza, że ​​użytkownicy po prostu deklarują funkcję, a nie jej definicję. Zastępowanie metody/funkcji służy do implementacji czystych metod wirtualnych w klasie pochodnej. Funkcja jest uważana za całkowicie wirtualną, jeśli jest opisana w klasie, jak podano poniżej:







Oto składnia a Czysta funkcja wirtualna pokoju klasowego.



klasa Pokój {
publiczny :
// czysta funkcja wirtualna
wirtualny podwójnie Getaria ( ) = 0 ;

prywatny :
podwójnie długość ; // Długość pokoju
podwójnie Szerokość ; // Szerokość pokoju
} ;

Co to jest klasa abstrakcyjna

Klasa, która została utworzona specjalnie w celu pełnienia funkcji klasy bazowej, nosi nazwę an klasa abstrakcyjna . W klasie abstrakcyjnej musi znajdować się co najmniej jedna czysto wirtualna funkcja. Może zawierać zmienne i standardowe funkcje. Klasy pochodne, które ma klasa abstrakcyjna, powinny implementować czysto wirtualną funkcję klasy bazowej, w przeciwnym razie staną się abstrakcyjne.



Rozważmy następujący przykład, w którym klasa nadrzędna udostępnia interfejs klasie bazowej, aby klasa bazowa mogła zastosować czysto wirtualną funkcję o nazwie getArea() . Dwie różne klasy używają tego samego getArea() funkcji, ale dane wyjściowe dla obu przypadków będą różne.





#include
za pomocą przestrzeń nazw standardowe ;
klasa Kształt
{
publiczny :
wirtualny int Getaria ( ) = 0 ;
próżnia Ustaw szerokość ( int z )
{
szerokość = z ;
}

próżnia zestawDługość ( int lth )
{
długość = lth ;
}

chroniony :
int szerokość ;
int długość ;
} ;

klasa Prostokąt : publiczny Kształt
{
publiczny : int Getaria ( )
{
powrót ( szerokość * długość ) ;
}
} ;

klasa Trójkąt : publiczny Kształt
{
publiczny : int Getaria ( )
{
powrót ( szerokość * długość ) / 2 ;
}
} ;

int główny ( próżnia )
{
Prostokąt r ;
Trójkąt T ;
R. Ustaw szerokość ( 9 ) ;
R. zestawDługość ( 5 ) ;
cout << „Pole prostokąta:” << R. Getaria ( ) << koniec ;
T. Ustaw szerokość ( 9 ) ;
T. zestawDługość ( 5 ) ;
cout << „Pole trójkąta:” << T. Getaria ( ) << koniec ;
powrót 0 ;
}

Wyjście



Znaczenie interfejsów

Każda klasa wywodząca się z czystej klasy abstrakcyjnej (Interfejsu) powinna zawsze implementować każdą z metod klasy bazowej, tj. Interfejsu. Wskaźniki interfejsu mogą być przekazywane zarówno do funkcji, jak i do klas, co pozwala nam wywoływać stamtąd funkcje klasy pochodnej.

Jakie są zasady korzystania z interfejsów

Istnieją następujące zasady, których użytkownicy powinni przestrzegać, korzystając z interfejsów w C++:

  • Deklaruj tylko czyste funkcje wirtualne.
  • Przypisano tylko 0 czystym funkcjom wirtualnym.
  • Nie twórz interfejsu klas.
  • Korzystając z odniesienia do podstawowej klasy abstrakcyjnej, możemy utworzyć wskaźnik do instancji klasy pochodnej.

W poniższym kodzie interfejs linuxhint , podobnie jak klasa abstrakcyjna została utworzona przy użyciu czysto wirtualnej metody, a jej funkcja jest zastosowana w klasie potomnej i nazwaliśmy returnString() metodę w funkcji main, postępując zgodnie z regułami interfejsu.

#include
#include
#włącz <łańcuch>
za pomocą przestrzeń nazw standardowe ;

klasa linuxhint
{
publiczny :
wirtualny string returnString ( ) = 0 ;
} ;
klasa dziecko : publiczny linuxhint
{
publiczny :
string returnString ( )
{
powrót „Witaj Linuxhint” ;
}
} ;
int główny ( )
{
dziecko obiekt_dziecko ;
linuxhint * pntr ;
pntr = & obiekt_potomny ;
cout < zwrotString ( ) ;
powrót 0 ;
}

Wyjście

Wniosek

Interfejsy to klasy abstrakcyjne, które opisują zachowanie klasy potrzebne do zaimplementowania wymaganej klasy w języku C++. Powyższe wskazówki są kluczowe dla początkującego, aby poprawić swoje umiejętności programowania w C++ poprzez pracę z interfejsami. Znajdziesz tu również kilka przykładów, które pomogą Ci nauczyć się implementacji interfejsów w C++.