Listing 4-1. Klasy reprezentujące strażaka oraz wóz straży pożarnej
Ten przykład składa się z dwóch części. Pierwsza rozpoczyna się w wierszu 5. pliku Firefighter.cs, a druga w wierszu 5. pliku Firetruck.cs. Oba pliki należą do solucji FireTraining.sln umieszczonej w katalogu StartingPoint.
Listing 4-2. Wóz strażacki ze zintegrowaną drabiną
Ten przykład rozpoczyna się w wierszu 5. pliku Firetruck.cs należącego do solucji FireTraining.sln umieszczonej w katalogu Associations.
Listing 4-3. Dziedziczenie w C#
Ten przykład stanowi kompletną zawartość pliku Firetruck.cs należącego do solucji FireTraining.sln umieszczonej w katalogu Associations.
Listing 4-4. Korzystanie z funkcjonalności klasy bazowej odziedziczonej przez klasę pochodną
Ten przykład rozpoczyna się w wierszu 14. pliku Program.cs należącego do solucji FireTraining.sln umieszczonej w katalogu Associations.
Listing 4-5. Zastosowanie metod klasy bazowej w celu spełnienia wymagań kompilatora
Ten przykład rozpoczyna się w wierszu 15. pliku Program.cs należącego do solucji FireTraining.sln umieszczonej w katalogu InheritanceWithMisplacedMethod.
Listing 4-6. Inny typ referencji — wywołana inna metoda
Ten przykład rozpoczyna się w wierszu 21. pliku Program.cs należącego do solucji FireTraining.sln umieszczonej w katalogu Hiding.
Listing 4-7. Zakręcone wykorzystanie ukrywania metod
Ten przykład rozpoczyna się w wierszu 39. pliku Program.cs należącego do solucji FireTraining.sln umieszczonej w katalogu Hiding.
Listing 4-8. Metody wirtualne oraz zagadnienie ich kolejności
Ten przykład rozpoczyna się w wierszu 5. pliku Firefighter.cs należącego do solucji FireTraining.sln umieszczonej w katalogu Virtual.
Listing 4-9. Wywoływanie metody wirtualnej
Ten przykład rozpoczyna się w wierszu 12. pliku Program.cs należącego do solucji FireTraining.sln umieszczonej w katalogu Virtual.
Listing 4-10. Udostępnianie metod klasom pochodnym
Ten przykład rozpoczyna się w wierszu 16. pliku Firefighter.cs należącego do solucji FireTraining.sln umieszczonej w katalogu Protection.
Listing 4-11. Przesłanianie udostępnionych metod
Ten przykład rozpoczyna się w wierszu 4. pliku TraineeFirefighter.cs należącego do solucji FireTraining.sln umieszczonej w katalogu Protection.
Listing 4-12. Unikanie powtórzeń dzięki wywoływaniu metod klasy bazowej
Ten przykład rozpoczyna się w wierszu 4. pliku TraineeFirefighter.cs należącego do solucji FireTraining.sln umieszczonej w katalogu CallBase.
Listing 4-13. Zmodyfikowane klasy bazowe
Ten przykład składa się z dwóch części. Pierwsza rozpoczyna się w wierszu 5. pliku FirefighterBase.cs, a druga w wierszu 4. pliku Firefighter.cs. Oba pliki należą do solucji FireTraining.sln umieszczonej w katalogu Refactored.
Listing 4-14. Zastosowanie nowych klas bazowych
Ten przykład rozpoczyna się w wierszu 4. pliku TraineeFirefighter.cs należącego do solucji FireTraining.sln umieszczonej w katalogu Refactored.
Listing 4-15. Klasa reprezentująca pracowników administracyjnych
Ten przykład rozpoczyna się w wierszu 4. pliku Administrator.cs należącego do solucji FireTraining.sln umieszczonej w katalogu Refactored.
Listing 4-16. Zastosowanie klasy Administrator
Ten przykład rozpoczyna się w wierszu 12. pliku Program.cs należącego do solucji FireTraining.sln umieszczonej w katalogu Refactored.
Listing 4-17. Klasa FireStation
Ten przykład rozpoczyna się w wierszu 4. pliku FireStation.cs należącego do solucji FireTraining.sln umieszczonej w katalogu Refactored.
Listing 4-18. Wyraźny sygnał, że z naszą hierarchią klas jest coś nie w porządku
Ten przykład rozpoczyna się w wierszu 5. pliku FirefighterBase.cs należącego do solucji FireTraining.sln umieszczonej w katalogu BrokenInheritance.
Listing 4-19. Kropla przepełniająca czarę: nasza hierarchia klas wymaga przemyślenia
Ten przykład rozpoczyna się w wierszu 5. pliku Administrator.cs należącego do solucji FireTraining.sln umieszczonej w katalogu BrokenInheritance.
Listing 4-20. Definiowanie interfejsów
Ten przykład składa się z dwóch części. Pierwsza z nich rozpoczyna sie w wierszu 2. pliku INamedPerson.cs, natomiast druga w wierszu 2. pliku ISalariedPerson.cs. Oba należą do solucji FireTraining.sln umieszczonej w katalogu Interfaces.
Listing 4-21. Implementacja interfejsów
Ten przykład rozpoczyna się w wierszu 4. pliku Administrator.cs należącego do solucji FireTraining.sln umieszczonej w katalogu Interfaces.
Listing 4-22. Te same interfejsy zaimplementowane w innej części hierarchii klas
Ten przykład rozpoczyna się w wierszu 5. pliku FirefighterBase.cs należącego do solucji FireTraining.sln umieszczonej w katalogu Interfaces.
Listing 4-23. Zastosowanie interfejsów w klasie FireStation
Ten przykład rozpoczyna się w wierszu 5. pliku FireStation.cs należącego do solucji FireTraining.sln umieszczonej w katalogu Interfaces.
Listing 4-24. Jawna implementacja interfejsu
Ten przykład rozpoczyna się w wierszu 4. pliku AFootInBothCamps.cs należącego do solucji FireTraining.sln umieszczonej w katalogu ExplicitInterfaces.
Listing 4-25. Zastosowanie jednego obiektu do wywoływania składowej o tej samej nazwie zaimplementowanej w dwóch interfejsach
Ten przykład rozpoczyna się w wierszu 10. pliku Program.cs należącego do solucji FireTraining.sln umieszczonej w katalogu ExplicitInterfaces.
Listing 4-26. Jawne zaimplementowanie jednego spośród interfejsów
Ten przykład rozpoczyna się w wierszu 4. pliku AFootInBothCamps.cs należącego do solucji FireTraining.sln umieszczonej w katalogu ExplicitAndImplicitInterfaces.
Listing 4-27. Implementacja interfejsu IClockIn
Ten przykład rozpoczyna się w wierszu 5. pliku FireStation.cs należącego do solucji FireTraining.sln umieszczonej w katalogu RuntimeCheck.