#include using namespace std; // klasa bazowa Pojazd class Pojazd{ private: int liczba_kol; // pole prywatne, nie ma do niego dostepu z klasy pochodnej protected: double predkosc; // pole chronione w klasie bazowej i pochodnej, trzyma predkosc pojazdu public: double przyspieszenie; // pole publiczne w klasie bazowej, ale chronione w klasie pochodnej, trzyma przyspieszenie pojazdu void Przyspiesz(double max); // metoda publiczna w klasie bazowej, ale chroniona w klasie pochodnej }; void Pojazd::Przyspiesz(double _max){ if(predkosc < _max) predkosc += przyspieszenie; } // klasa pochodna Samolot, ktora dziedziczy po klasie Pojazd z sposob chroniony => pola publiczne i chronione w klasie bazowej sa chronione w klasie pochodnej; pola prywatne sa niedostepne class Samolot : protected Pojazd { private: const int predkosc_max = 930; // [km/h] maksymalna predkosc samolotu - ta linia powoduje warning public: // int Zwroc_predkosc_max(); // niepotrzebna void Podaj_predkosc(double v); // metoda przypisujaca predkosc double Zwroc_predkosc(); // metoda zwracajaca wartosc predkosci void Podaj_przyspieszenie(double a); // metoda przypisujaca przyspieszenie void Wywolaj_przyspieszenie(); // metoda wywolujaca metode klasy Pojazd void Podaj_liczbe_kol(int n); // metoda przypisujaca liczne kol - nie zadziala! }; // int Samolot::Zwroc_predkosc_max(){ // return predkosc_max; // } void Samolot::Podaj_predkosc(double _v){ predkosc = _v; } double Samolot::Zwroc_predkosc(){ return predkosc; } void Samolot::Podaj_przyspieszenie(double _a){ przyspieszenie = _a; } void Samolot::Wywolaj_przyspieszenie(){ Przyspiesz(predkosc_max); } // void Samolot::Podaj_liczbe_kol(int n){ // to nie dziala, gdyz klasa pochodna nie ma dostepu do pol prywatnych klasy bazowej // liczba_kol = n; // } // int main(){ Samolot Boeing; // tworzymy obiekt klasy Samolot Boeing.Podaj_predkosc(913); // za pomoca metody przypisujemy mu predkosc cout << "Predkosc samolotu: " << Boeing.Zwroc_predkosc() << endl; // wypisanie predkosci Boeing.Podaj_przyspieszenie(10); // za pomoca metody przypisujemy mu przyspieszenie // Boeing.Przyspiesz(Boeing.Podaj_predkosc_max()); // taka konstrukcja nie zadziala, bo nie mamy dostepu do zmiennych publicznych klasy bazowej // Boeing.Przyspiesz(Boeing.predkosc_max); // taka konstrukcja nie zadziala - funkcja bazowa nie ma dostepu do pol prywatnych funkcji pochodnej Boeing.Wywolaj_przyspieszenie(); // wywolujemy metode klasy Samolot, ktora wywoluje metode klasy Pojad cout << "Predkosc samolotu po przyspieszeniu: " << Boeing.Zwroc_predkosc() << endl; return 0; }