Źródło: Arkusze CKE
Jakie jest źródło błędu w podanym kodzie przez programistę?
class Dokument {
public string nazwa;
protected string autor;
}
// .... w kodzie funkcji main
Dokument doc = new Dokument();
Console.WriteLine(doc.autor);
Warianty odpowiedzi
-
A
Inicjalizacja obiektu została błędnie zapisana.
-
B
Brak konstruktora w definicji klasy.
-
C
Pole autor jest niedostępne z tego poziomu.
-
D
Argumenty konstruktora powinny być przekazane podczas inicjalizacji obiektu.
Wyjaśnienie
Modyfikator dostępu protected działa jak zamknięte drzwi do pokoju, do którego klucz mają tylko członkowie rodziny.
Pole oznaczone jako protected jest widoczne wewnątrz klasy, w której zostało zdefiniowane, oraz w klasach, które po niej dziedziczą.
Nie masz jednak do niego dostępu bezpośrednio z zewnątrz, na przykład z poziomu funkcji main. Kompilator od razu zgłosi błąd braku uprawnień.