KWALIFIKACJA INF2 + INF3 - PRÓBNY

PYTANIE NR 11.
Dziedziczenie w programowaniu obiektowym pozwala na
A.
B.
C.
D.
Wyjaśnienie poprawnej odpowiedzi:
Dziedziczenie w OOP służy do tworzenia klasy pochodnej na bazie istniejącej klasy (bazowej), aby przejąć jej cechy i zachowania oraz je rozszerzać. Nie jest to ani "usuwanie elementów" z klasy, ani łączenie obiektów, ani kopiowanie stanu jednego obiektu do drugiego.

Pełne wyjaśnienie:

Dziedziczenie to mechanizm programowania obiektowego, w którym tworzy się nową klasę (klasę pochodną) na podstawie klasy już istniejącej (klasy bazowej/superklasy). Klasa pochodna przejmuje (dziedziczy) pola i metody klasy bazowej, a następnie może je rozszerzać (dodawać nowe elementy) lub modyfikować zachowanie (np. przez nadpisywanie metod, zależnie od języka).

Dlatego poprawne jest stwierdzenie: "tworzenie nowej klasy na podstawie jednej lub kilku już istniejących". W praktyce pozwala to budować hierarchie klas i ułatwia ponowne użycie wspólnego kodu w wielu typach.

Pozostałe odpowiedzi opisują inne działania, które nie są istotą dziedziczenia:

  • "usunięcie z istniejącej klasy zbędnych elementów" – to raczej refaktoryzacja (porządkowanie projektu) lub modyfikacja kodu, a nie relacja dziedziczenia między klasami.
  • "łączenie obiektów" – to skojarzenie pasuje do kompozycji/agregacji, gdzie obiekt zawiera inne obiekty jako pola (relacja "ma" / has-a), a nie "jest" (is-a).
  • "kopiowanie cech jednego obiektu do innego" – dziedziczenie nie polega na kopiowaniu stanu instancji. W OOP obiekty mają własny stan, a dziedziczenie dotyczy definicji typu (klasy), czyli tego, jakie cechy i zachowania obiekty danego typu mogą mieć.

Wskazówka egzaminacyjna: jeśli w odpowiedzi pojawia się "nowa klasa na podstawie istniejącej" albo relacja is-a, najczęściej chodzi o dziedziczenie. Jeśli mowa o "zawieraniu" obiektów, to zwykle kompozycja.

Dodatkowe pytania

Dodatkowe pytania (FAQ):
Dziedziczenie to mechanizm OOP, w którym tworzysz klasę pochodną na podstawie klasy bazowej. Klasa pochodna przejmuje pola i metody klasy bazowej, a potem może dodawać własne elementy lub zmieniać zachowanie (np. przez nadpisanie metod).
Dziedziczenie opisuje relację typu "jest" (is-a): np. "Samochód jest Pojazdem". Kompozycja/agregacja to relacja "ma" (has-a): np. "Samochód ma Silnik". W testach szukaj sformułowania o tworzeniu nowej klasy na bazie istniejącej.
Dziedziczenie dotyczy definicji klasy (typu), a nie kopiowania stanu między obiektami (instancjami). Obiekty mogą być kopiowane (np. klonowane), ale to inny mechanizm niż tworzenie klasy pochodnej z klasy bazowej.
Najczęściej daje ponowne użycie wspólnego kodu, porządek w modelu domeny oraz możliwość polimorfizmu (obsługa różnych klas pochodnych przez wspólny typ bazowy). Ułatwia też rozwijanie systemu przez dopisywanie nowych typów bez duplikacji kodu.
Gdy chcesz budować funkcjonalność przez "składanie" obiektu z innych obiektów (np. modułów/usług) lub gdy relacja nie jest naturalnym "jest-a". Kompozycja bywa elastyczniejsza, bo pozwala zmieniać zachowanie przez podmianę składowych zamiast rozbudowy hierarchii klas.
Klasa bazowa (superklasa) to klasa, z której dziedziczą inne klasy. Klasa pochodna (podklasa) to klasa utworzona na jej podstawie: przejmuje jej elementy i może dodać własne. W praktyce buduje to hierarchię typów w aplikacji.
To zależy od języka. W wielu językach (np. Java, C#) dziedziczenie klas jest pojedyncze, a wielokrotność realizuje się przez interfejsy. W innych językach możliwe jest dziedziczenie wielokrotne. Na egzaminie zwykle liczy się ogólna idea: klasa pochodna powstaje z istniejącej.
Częsty błąd to mylenie dziedziczenia z kompozycją ("łączenie obiektów") albo z kopiowaniem danych obiektu. Uwaga też na odpowiedzi o "usuwaniu elementów z klasy" – to refaktoryzacja. Skup się na relacji typów i tworzeniu klasy pochodnej.
Dziedziczenie tworzy wspólny typ bazowy dla wielu klas pochodnych. Dzięki temu możesz używać obiektów różnych klas pochodnych przez referencję typu bazowego, a wywołania metod (gdy są przesłonięte/nadpisane) mogą zachowywać się inaczej w zależności od rzeczywistego typu obiektu.
Przećwicz rozpoznawanie relacji "jest-a" i "ma-a", budowanie krótkich hierarchii klas oraz wskazywanie, co dziedziczy klasa pochodna. Pomaga też analiza kilku przykładów kodu z nadpisywaniem metod i z użyciem typu bazowego w zmiennych lub kolekcjach.
info

To pytanie poprawnie rozwiązuje 73% zdających egzamin. średnio łatwe

W praktyce zawodowej kluczowe jest to, że dziedziczenie w OOP służy do tworzenia klasy pochodnej na bazie istniejącej klasy (bazowej), aby przejąć jej cechy i zachowania oraz je rozszerzać.

Źródła:

  • Oracle Java Tutorials – Inheritance (trail: Learning the Java Language), https://docs.oracle.com/javase/tutorial/java/IandI/subclasses.html (dostęp: 2026-03-01)
  • Microsoft Learn – C# inheritance (conceptual documentation), https://learn.microsoft.com/dotnet/csharp/fundamentals/object-oriented/inheritance (dostęp: 2026-03-01)
  • Wikipedia (PL) – "Dziedziczenie (programowanie obiektowe)", https://pl.wikipedia.org/wiki/Dziedziczenie_(programowanie_obiektowe) (dostęp: 2026-03-01)

Materiały:

  • Dokumentacja języka używanego na kwalifikacji (np. C# lub Java) – rozdziały o dziedziczeniu
  • Podręcznik do OOP omawiający relacje: dziedziczenie vs kompozycja
  • Ćwiczenia projektowe: modelowanie prostych domen (np. pojazdy, pracownicy) w postaci hierarchii klas

Aktualizacja pytania: 31.03.2026



Aktualizacja pytania: 31.03.2026
📡 Brak połączenia internetowego