Programista popełnił błąd w przedstawionym kodzie. Na czym ten błąd polega?
Programista popełnił błąd w przedstawionym kodzie. Na czym ten błąd polega?
Wyjaśnienie i uzasadnienie dydaktyczne
Poprawna odpowiedź: D
Uzasadnienie i szersze wyjaśnienie:
W przedstawionym kodzie (najprawdopodobniej C#) pole autor w klasie Dokument zostało zadeklarowane z modyfikatorem dostępu protected. Oznacza to, że dostęp do tego pola jest możliwy tylko z wnętrza klasy Dokument oraz z klas, które po niej dziedziczą.
Kod w funkcji main próbuje odwołać się do pola doc.autor z zewnątrz klasy Dokument i nie jest to kod w klasie pochodnej. Taka operacja jest niedozwolona i spowoduje błąd kompilacji, ponieważ pole autor jest niedostępne z tego poziomu ze względu na swój poziom ochrony.
Dlaczego pozostałe odpowiedzi są nieprawidłowe?
- A: Brak zdefiniowanego konstruktora nie jest błędem. W takiej sytuacji kompilator automatycznie generuje domyślny, publiczny konstruktor bezparametrowy, który jest poprawnie używany w linii
new Dokument(). - B: Inicjacja obiektu
Dokument doc = new Dokument();jest zapisana w pełni poprawnie. - C: Ponieważ używany jest domyślny konstruktor bezparametrowy, nie ma potrzeby (ani możliwości) przekazywania do niego argumentów.
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
- 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.
- Modyfikatory dostępu (Access Modifiers)Słowa kluczowe definiujące widoczność i zakres dostępności składowych klasy (pól, metod, właściwości).
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:
- #134
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:
- #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