W przedstawionym kodzie zdefiniowano abstrakcyjną klasę figura i dziedziczącą po niej klasę prostokąta ze zdefiniowanymi polami i konstruktorami. Wskaż minimalną implementację sekcji /* metody klasy */ dla klasy Prostokat:
W przedstawionym kodzie zdefiniowano abstrakcyjną klasę figura i dziedziczącą po niej klasę prostokąta ze zdefiniowanymi polami i konstruktorami. Wskaż minimalną implementację sekcji /* metody klasy */ dla klasy Prostokat:
Wyjaśnienie i uzasadnienie dydaktyczne
Poprawna odpowiedź: A
Uzasadnienie i szersze wyjaśnienie:
Zgodnie z zasadami programowania obiektowego, jeśli klasa konkretna (nieabstrakcyjna) dziedziczy po klasie abstrakcyjnej, ma obowiązek zaimplementować (czyli dostarczyć ciało) wszystkie metody abstrakcyjne zdefiniowane w klasie nadrzędnej. W tym przypadku klasa Prostokat dziedziczy po abstrakcyjnej klasie Figura, która definiuje dwie metody abstrakcyjne: abstract double Pole() oraz abstract double Obwod().
Oznacza to, że klasa Prostokat, aby mogła być skompilowana, musi zawierać konkretne implementacje obu tych metod, z zachowaniem ich oryginalnych nazw i sygnatur.
- Opcja A jest jedyną, która spełnia te wymagania. Definiuje ona obie metody:
public double Pole()orazpublic double Obwod(), dostarczając dla nich logikę obliczeniową zgodną z definicją prostokąta.
Dlaczego pozostałe odpowiedzi są nieprawidłowe?
- B. Implementuje tylko metodę
Pole(). Brakuje implementacji metodyObwod(), co spowoduje błąd kompilacji z komunikatem, że klasaProstokatmusi zaimplementować odziedziczoną metodę abstrakcyjnąFigura.Obwod(). - C. Definiuje metody o innych nazwach (
LiczPoleiLiczObwod). Z perspektywy kompilatora nie są to implementacje metodPoleiObwodwymaganych przez klasęFigura. To zupełnie nowe metody, a te abstrakcyjne nadal pozostają niezaimplementowane. - D. Próbuje zdefiniować metody jako abstrakcyjne i jednocześnie nadać im ciało (kod w nawiasach klamrowych), co jest niedozwolone. Metoda abstrakcyjna z definicji nie ma ciała. Ponadto klasa
Prostokatjest zdefiniowana jako klasa konkretna, więc nie może zawierać metod abstrakcyjnych.
Chcesz poćwiczyć całą kwalifikację INF.04?
Egzamin próbny na czas, nauka działami, losowe pytanie albo przegląd całej bazy — wszystko w przeglądarce i bez zakładania konta.
Pojęcia z tego pytania
- Klasa abstrakcyjna (Abstract Class)Klasa bazowa, z której nie można bezpośrednio utworzyć obiektu, służąca jako wzorzec dla klas pochodnych i mogąca zawierać metody abstrakcyjne oraz zaimplementowane.
- Konstruktor i DestruktorSpecjalne metody klasy: Konstruktor inicjalizuje stan nowo tworzonego obiektu, a Destruktor zwalnia zasoby przed jego usunięciem.
- Narzędzia programistyczne: Kompilator, Interpreter, DebugerFundamentalne narzędzia wytwarzania oprogramowania: kompilator przekształca cały kod w plik binarny, interpreter wykonuje kod linia po linii, a debugger pozwala śledzić błędy w czasie działania.
Podobne pytania z działu „Klasy obiekty i metody”
Ten sam obszar materiału z kwalifikacji INF.04. W całej bazie znajdziesz 38 pytań z tego działu.
- #87
Przedstawiony zapis w języku C# oznacza definicję klasy Car, która:
- #136
W języku C# szablon List implementuje funkcjonalność listy. Z inicjalizacji obiektu wykaz wynika, że jego elementami są:
- #150
W językach C++ lub C# słowo kluczowe virtual można stosować do
- #153
Zastosowanie modyfikatora abstract w definicji metody klasy oznacza, że
- #158
Z przedstawionej definicji pola licznik można wywnioskować, że