Wprowadzenie do przesłonięcia w C ++

Przesłonięcie w C ++ jest jednym ze sposobów osiągnięcia polimorfizmu w czasie wykonywania, w którym modyfikujemy zachowanie tej samej metody. Ogólnie rzecz biorąc, klasa potomna dziedziczy funkcje składowe i elementy danych z klasy podstawowej. Ale gdy potrzebujemy zastąpić funkcjonalność w klasie potomnej, musimy użyć zastąpienia funkcji. Przesłanianie daje uprawnienie do metod mających tę samą nazwę zarówno w klasie bazowej, jak i klasie pochodnej. Pozwala nam zmieniać zachowanie funkcji obecne w klasie bazowej, w jej klasach pochodnych, zgodnie z naszymi potrzebami.

Jak działa nadpisywanie w C ++?

Zanim zrozumiemy zastąpienie, najpierw zrozummy polimorfizm. Dosłowne znaczenie polimorfizmu to wiele form, tj. Posiadanie wielu form jednej konkretnej rzeczy. W obiektowym języku programowania jest to jedna z przydatnych funkcji. W przypadku dziedziczenia polimorfizm osiąga się przez zastąpienie funkcji lub metody, gdy zarówno klasa podstawowa, jak i pochodna mają taką samą deklarację funkcji składowej, ale ich definicja będzie inna.

Aby to zrobić, musimy najpierw odziedziczyć klasę w klasie pochodnej. Następnie powinniśmy podać różne definicje zgodnie z potrzebą, dla każdej z metod klasy bazowej ponownie w klasie pochodnej. Tylko wtedy mówi się, że ta funkcja jest nadpisana, a ten proces krok po kroku nazywa się nadpisywaniem funkcji.

Załóżmy, że weźmy scenariusz, w którym nasza aplikacja wymaga zmiany zachowania metody klasy bazowej w klasie pochodnej, wówczas powinniśmy użyć funkcji przesłonięcia . Aby zastąpić funkcję w klasie pochodnej, musimy mieć tę samą sygnaturę w klasie potomnej, a nazwy funkcji powinny być takie same w obu bazach i klasach pochodnych. Podpis oznacza tutaj użycie tego samego typu danych i sekwencji parametrów, które należy przekazać w funkcji. Jeśli nie ma potrzeby parametrów, nie musimy używać żadnego parametru w funkcji podstawowej ani funkcji potomnej. Poniżej przedstawiamy kilka punktów, o których musimy pamiętać przed użyciem zastępowania.

  • W programowaniu w C ++ zastąpienie będzie przykładem polimorfizmu w czasie wykonywania lub dynamicznego polimorfizmu.
  • Przesłonięcie jest możliwe tylko w metodach obecnych w klasach pochodnych, ponieważ metoda jest zastępowana w klasie pochodnej z klasy bazowej.
  • Aby osiągnąć zastąpienie, funkcje obecne w klasach podstawowych i pochodnych powinny mieć tę samą nazwę, ten sam typ zwracany i te same parametry.

Metoda zastąpiona przez deklarację zastąpienia jest nazywana zastąpioną metodą podstawową. Klasa podstawowa będzie zawierać tę metodę. Wywołana nowa implementacja, metoda override jest dziedziczona z tej klasy podstawowej. Kiedy tworzymy obiekt klasy pochodnej i wywołujemy funkcję członka, która istnieje zarówno w klasie podstawowej, jak i pochodnej, funkcja członka klasy podstawowej zostanie zignorowana i funkcja członka klasy pochodnej zostanie wywołana.

Poniżej przedstawiono wymagania dotyczące zastępowania metod:

  • Pierwszą i najważniejszą rzeczą jest dziedziczenie, które powinno istnieć od klasy podstawowej do pochodnej, ponieważ nie można wykonać zastąpienia funkcji w tej samej klasie. Aby to osiągnąć, potrzebujemy klasy bazowej i pochodnej.
  • Przedefiniowana funkcja powinna mieć dokładnie taką samą deklarację w klasach podstawowych i pochodnych. Co to znaczy? Oznacza to, że funkcje powinny mieć tę samą nazwę, tę samą sygnaturę i tę samą listę parametrów.

Przykład zastąpienia

Kod

class Animal
(
public:
void Message ( )
(
cout << "Hello there!! I am Animal";
)
);
class Dog: public Animal
(
public:
void Message ( )
(
cout << "I am Dog!!";
)
)

W powyższym przykładzie funkcja Message () jest nadpisana w klasie pochodnej.

Przykład z krokami

1. Przyjrzyjmy się przykładowi funkcji main (), aby lepiej zrozumieć nadpisywanie.

2. Utwórz klasę podstawową o dowolnej nazwie. Tutaj używam Animal. Napisz metodę wyświetlania komunikatu do wyświetlenia. To będzie nasza przesłonięta metoda, którą zastąpimy w odziedziczonej klasie. Wewnątrz metody napisz wiadomość do wydrukowania.

class Animal
(
public void Message( )
(
cout << "Hello there!! I am Animal";
)
)

3. Teraz stwórz jeszcze jednego psa klasy. Tym razem odziedziczymy go od klasy podstawowej, którą wcześniej stworzyliśmy, tj. Animal. Do dziedziczenia używamy symbolu „:”.

class Dog: public Animal

4. Tutaj deklarujemy tę samą funkcję Message () dla różnych implementacji i piszemy komunikat. Upewnij się, że nazwa i podpis metody w klasie pochodnej są zgodne z nazwą i podpisem metody w klasie bazowej.

public void Message ( )
(
cout << "Hey!! I am Dog";
)

5. Potrzebujemy jeszcze jednej klasy, aby wykonać funkcjonalność w celu sprawdzenia zastąpienia. Utwórz klasę o dowolnej nazwie. Wewnątrz tego napisz funkcję główną.

class ExecutionClass
(
int Main( )
(
)
)

6. Utwórz obiekt klasy nadrzędnej i uruchom funkcję, używając obiektu klasy. Spowoduje to wywołanie metody Message obecnej w klasie Animal.

Animal animalObject;
animalObject.Message( );

7. Teraz utwórz obiekt klasy pochodnej i wywołaj metodę Message. Spowoduje to wywołanie metody Message klasy Dog.

Dog dogObject;
dogObject.Message( );

8. Jakie będą wyniki tego kodu? Czy możesz to zgadnąć? Jest to pokazane poniżej.

Wynik:

9. W powyższym przykładzie wywołujemy funkcję o tej samej nazwie i podpisie, używając osobno obiektu utworzonego dla klasy pochodnej i podstawowej. W obu przypadkach będą wywoływane różne wersje funkcji dla klasy podstawowej i pochodnej.

Wniosek

W tym artykule zrozumieliśmy metodę nadpisywania w C ++, potrzebę nadpisywania metody, rzeczywiste przykłady zasady nadpisywania, sposób jej osiągnięcia oraz przykład nadpisywania za pomocą kodu. Możemy wywnioskować, że przesłonięcie jest jedną z przydatnych funkcji polimorfizmu w C ++, w której możemy zmienić zachowanie metody klasy bazowej w klasie pochodnej.

Polecane artykuły

Jest to przewodnik po zastępowaniu w C ++. W tym miejscu omawiamy działanie Przesłaniania w C ++, prosty przykład z różnymi krokami. Możesz również przejrzeć nasze inne powiązane artykuły, aby dowiedzieć się więcej-

  1. Tablice w C ++
  2. Wprowadzenie do C ++
  3. Polecenia w C ++
  4. Kopiuj konstruktora w C ++
  5. Przewodnik po zastępowaniu w OOP
  6. Przesłanianie w Javie