Dziedziczenie 247
Tak wygląda bezpośrednie wywołanie metody klasy Ssak. Listing 16.7 przybliża to zagadnienie.
1: //Listing 16.7 Wywołanie metody bazowej z nadpisanej
2:
3: finclude <iostream.h>
4:
5: class Ssak
6: {
7: public:
8: void Ruch() const { cout « "Ssak przeszedł jeden krok\n"; }
9: void Ruch(int distance) const
10: { cout « "Ssak przeszedł " « distance « " kroki.\n"; )
11: protected:
12: int jegoWiek;
13: int jegoWaga;
15:
16: class Pies : public Ssak
18: public:
19: void Ruch () const;
20: ) ;
21:
22: void Pies::Ruch() const
24: cout « "Ruch psa...\n";
25: Ssak::Ruch(3);
27:
28: int main()
30: Ssak bigAnimal;
31: Pies fido;
32: bigAnimal.Ruch(2);
33: fido.Ssak::Ruch(4);
34: return 0;
35: }
Ssak przeszedł 2 kroki. Ssak przeszedł 4 kroki.
ANALIZA:
W linii 30 jest tworzony obiekt klasy Ssak o nazwie duzeZwierze i Fido klasy Pies. W linii 32 wywołujemy metodę Ruch() z klasy Ssak, pobierającą wartość całkowitą.
Programista chce wywołać metodę Ruch (int) z obiektu Fido klasy Pies. Jest jednak pewien problem, gdyż klasa Pies nadpisała metodę Ruch(), ale nie przeciążyła jej czyli funkcja Ruch (int) nie jest bezpośrednio dostępna. Rozwiązaniem jest bezpośrednie odwołanie się do klasy Ssak i wywołanie metody Ruch (int) tak, jak jest to wykonane w linii 33.
Tak wygląda bezpośrednie wywołanie metody klasy Ssak. Listing 16.7 przybliża to zagadnienie.
1: //Listing 16.7 Wywołanie metody bazowej z nadpisanej
2:
3: ttinciude <iostream.h>
4;
5: class Ssak
6: {
7: public:
8: void Ruch() const { cout « "Ssak przeszedł jeden krok\n"; }
9: void Ruch(int distance) const
10: { cout « "Ssak przeszedł " « distance « " kroki.\n"; 1
11: protected:
12: int jegoWiek;
13: int jegoWaga;
15:
16: class Pies : public Ssak
18: public:
19: void Ruch()const;
21:
22: void Pies::Ruch() const
24: cout « "Ruch psa...\n";
25: Ssak::Ruch(3);
27:
28: int main()
30: Ssak bigAnimal;
31: Pies fido;
32: bigAnimal.Ruch(2);
33: fido.Ssak::Ruch(4);
34: return 0;
35: }
EFEKT DZIAŁANIA
Ssak przeszedł 2 kroki. Ssak przeszedł 4 kroki.
ANALIZA:
W linii 30 jest tworzony obiekt klasy' Ssak o nazwie duzeZwierze i Fido klasy Pies. W linii 32 wywołujemy metodę Ruch() z klasy Ssak, pobierającą wartość całkowitą.
Programista chce wywołać metodę Ruch (int) z obiektu Fido klasy Pies. Jest jednak pewien problem, gdyż klasa Pies nadpisała metodę Ruch (), ale nie przeciążyła jej czyli funkcja Ruch (int) nie jest bezpośrednio dostępna. Rozwiązaniem jest bezpośrednie odwołanie się do klasy Ssak i wywołanie metody Ruch (int) tak, jak jest to wykonane w linii 33.