Strona główna › Pytania INF.04 › Pytanie 196
INF.04 · pytanie #196
Co zostanie wyświetlone po wykonaniu poniższego kodu? <pre class="code-block">class Animal { constructor(name) { this.name = name; } speak() { return `${this.name} makes a noise.`; } } class Dog extends Animal { speak() { return `${this.name} barks.`; } } let dog = new Dog('Rex'); console.log(dog.speak());</pre>
- ARex barks.
- BError: speak is not defined
- Cundefined
- DRex makes a noise.
Poprawna odpowiedź: A. Rex barks.
Kliknij odpowiedź, którą uważasz za poprawną.
Wyjaśnienie
Odpowiedź "Rex barks." jest prawidłowa, ponieważ kod definiuje klasę Dog, która dziedziczy po klasie Animal. W klasie Animal mamy metodę speak(), która zwraca tekst wskazujący na dźwięk wydawany przez zwierzę. Kiedy tworzymy instancję klasy Dog, przekazujemy jej imię 'Rex'. Następnie, kiedy wywołujemy metodę speak() na obiekcie dog, zostaje użyta metoda zdefiniowana w klasie Dog, a nie ta z klasy Animal. To dlatego zwracany tekst to 'Rex barks.', co jest poprawnym i oczekiwanym wynikiem. Przykładowo, w praktycznych zastosowaniach, jeśli miałbyś różne klasy zwierząt, można by je zdefiniować w podobny sposób, gdzie każde zwierzę mogłoby mieć swoją unikalną implementację metody speak(), co wprowadza elastyczność i możliwości rozszerzalności w kodowaniu.
🤖 Wyjaśnienie generowane przez AI – weryfikuj w oficjalnych źródłach.