Interfejsy w C ++ są stosowane przy użyciu klas abstrakcyjnych. Z drugiej strony klasa nazywana jest klasą abstrakcyjną, jeśli co najmniej jedna funkcja w klasie jest zadeklarowana jako czysta funkcja wirtualna.
Jaka jest czysta funkcja wirtualna
Czysta funkcja wirtualna oznacza, że użytkownicy po prostu deklarują funkcję, a nie jej definicję. Zastępowanie metody/funkcji służy do wdrożenia czystej wirtualnej metody w klasie pochodnej. Funkcja jest uważana za czystą wirtualną, jeśli jest opisana w klasie, jak podano poniżej:
Oto składnia Czysta funkcja wirtualna sali klasy.
klasa
publiczny:
// Czysta funkcja wirtualna
Virtual Doublearea () = 0;
prywatny:
podwójna długość; // długość pokoju
podwójna szerokość; // Szerokość pokoju
;
Co to jest klasa abstrakcyjna
Klasa, która została stworzona specjalnie w celu służenia jako klasa podstawowa, nosi nazwę Klasa abstrakcyjna. Co najmniej jedna czysta funkcja wirtualna musi być obecna w klasie abstrakcyjnej. Może zawierać zmienne i funkcje standardowe. Klasy pochodne, które ma klasa abstrakcyjna, powinny zaimplementować czystą wirtualną funkcję klasy podstawowej, w przeciwnym razie staną się abstrakcyjne.
Rozważ następujący przykład, w którym klasa nadrzędna podaje interfejs do klasy podstawowej, aby klasa podstawowa zastosować czystą funkcję wirtualną wywoływaną getarea (). Dwie różne klasy używają tego samego getarea () funkcja, ale dane wyjściowe dla obu przypadków będzie inne.
#włączać
za pomocą przestrzeni nazw Std;
kształt klasy
publiczny:
Virtual int getarea () = 0;
void setWidth (int wth)
szerokość = wth;
void setLength (int lth)
długość = lth;
chroniony:
int szerokość;
długość;
;
Prostokąt klasy: kształt publiczny
public: int getarea ()
powrót (szerokość *długość);
;
Trójkąt klasowy: kształt publiczny
public: int getarea ()
powrót (szerokość *długość) / 2;
;
int Main (void)
Prostokąt r;
Trójkąt t;
R.setWidth (9);
R.SetLength (5);
Cout << "Area of Rectangle: " << R.getArea() << endl;
T.setWidth (9);
T.SetLength (5);
Cout << "Area of Triangle: " << T.getArea() << endl;
powrót 0;
Wyjście
Znaczenie interfejsów
Każda klasa pochodząca z czystej klasy abstrakcyjnej (interfejs) powinna zawsze zaimplementować każdą z metod klasy podstawowej, i.mi., Interfejs. Wskaźniki interfejsu mogą być przekazywane zarówno do funkcji, jak i klas, umożliwiając nam wywołanie funkcji klasą pochodną stamtąd.
Jakie są zasady korzystania z interfejsów
Istnieją następujące reguły, które użytkownicy powinni przestrzegać, aby używać interfejsów w C ++:
W poniższym kodzie interfejs Linuxhint, jak klasa abstrakcyjna została stworzona przy użyciu czystej wirtualnej metody, a także jej funkcji jest stosowana w klasie dziecięcej, a my zadzwoniliśmy Returnstring () Metoda w głównej funkcji poprzez przestrzeganie reguł interfejsu.
#włączać
#włączać
#włączać
za pomocą przestrzeni nazw Std;
Klasa Linuxhint
publiczny:
wirtualny ciąg returnstring () = 0;
;
Klasa Dziecko: publiczne Linuxhint
publiczny:
ciąg returnstring ()
powrót „Hello Linuxhint”;
;
int main ()
Dziecko dziecięce;
Linuxhint* pntr;
pntr = & child_object;
Coutpowrót 0;
Wyjście
Wniosek
Interfejsy to klasy abstrakcyjne, które opisują zachowanie klasy wymagające wdrożenia wymaganej klasy w C++. Wyżej wymienione wytyczne są kluczowe dla początkujących w celu poprawy umiejętności programowania C ++ poprzez pracę z interfejsami. Znajdziesz również kilka przykładów, które pomogą Ci nauczyć się wdrażania interfejsów w C++.