INF.04Pytanie #765 z 856jezyk-csharp-i-platforma-dotnet
Jaki tekst zostanie wyświetlony w konsoli po wykonaniu poniższego kodu w języku C#?
Jaki tekst zostanie wyświetlony w konsoli po wykonaniu poniższego kodu w języku C#?
Opcje odpowiedzi:
A
Dźwięk zwierzęcia
B
Hau hau!
PrawidłowaC
Dźwięk zwierzęcia Hau hau!
D
Kod spowoduje błąd kompilacji.
Reklama
Wyjaśnienie i uzasadnienie dydaktyczne
Poprawna odpowiedź: B
Uzasadnienie i szersze wyjaśnienie:
Przedstawiony kod jest klasycznym przykładem polimorfizmu w programowaniu obiektowym. Kluczowe są tu słowa kluczowe virtual i override.
- W linii
Zwierze mojeZwierze = new Pies();tworzymy obiekt typuPies, ale przechowujemy go w zmiennej typuZwierze. Jest to możliwe, ponieważPiesdziedziczy poZwierze. - Metoda
DajGlos()w klasie bazowejZwierzejest oznaczona jakovirtual. Oznacza to, że klasy pochodne mogą dostarczyć jej własną implementację. - Klasa
Piesprzesłania tę metodę za pomocą słowa kluczowegooverride, implementując ją jako wypisanie tekstu „Hau hau!”. - Kiedy wywołujemy
mojeZwierze.DajGlos(), środowisko uruchomieniowe .NET sprawdza rzeczywisty typ obiektu (którym jestPies), a nie typ zmiennej (Zwierze). Dzięki temu, że metoda jest wirtualna, zostaje wywołana jej przesłonięta wersja z klasyPies.
Dlaczego pozostałe odpowiedzi są nieprawidłowe?
- A. Dźwięk zwierzęcia: Ten tekst zostałby wyświetlony, gdyby metoda
DajGlos()w klasieZwierzenie była wirtualna lub gdyby klasaPiesjej nie przesłoniła. - C. Dźwięk zwierzęcia\nHau hau!: Taki wynik uzyskalibyśmy, gdyby wewnątrz metody
DajGlos()w klasiePiesznajdowało się dodatkowo wywołanie metody z klasy bazowej, np.base.DajGlos();. - D. Kod spowoduje błąd kompilacji: Kod jest w pełni poprawny składniowo i logicznie. Wykorzystuje standardowe mechanizmy dziedziczenia i polimorfizmu w języku C#.
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
- Dziedziczenie (Inheritance w OOP)Mechanizm programowania obiektowego pozwalający klasie pochodnej (podrzędnej) na przejęcie pól i metod z klasy bazowej (nadrzędnej) oraz ich rozszerzenie lub modyfikację.
- Polimorfizm (Wielopostaciowość w OOP)Cecha programowania obiektowego pozwalająca na jednakowe traktowanie obiektów różnych klas pochodnych za pośrednictwem wspólnego interfejsu lub klasy bazowej z różną implementacją zachowań.
- Język programowania C# (.NET)Wieloparadygmatowy, obiektowy język programowania stworzony przez firmę Microsoft dla platformy .NET, cechujący się silnym typowaniem, automatycznym odśmiecaniem pamięci (GC) i bogatą składnią.
Reklama
Podobne pytania z działu „Jezyk csharp i platforma dotnet”
Ten sam obszar materiału z kwalifikacji INF.04. W całej bazie znajdziesz 13 pytań z tego działu.