JavaRush /Java блог /Random UA /Розширення/звуження типів посилань: різні джерела - різна...
Core
35 рівень
Екатеринбург

Розширення/звуження типів посилань: різні джерела - різна інтерпретація

Стаття з групи Random UA
Добридень. Є підозра на помилку у лекціях JavaRush. Нехай є клас Parent і успадкований від нього клас Child Нехай є наступні рядки коду: Parent parent = new Child; Child child = (Child) parent; Відповідно до лекції курсу level 12, lesson 1 (1. Поліморфізм та перевизначення), пункту 5) (Приведення типів.) перший рядок - це звуження, а друге розширення( в лекції Сow - батько, Whale - спадкоємець) Але ж це не так. Усі з точністю навпаки. Сенс описаного зрозумілий: у першому рядку ми створабо об'єкт типу Child та обмежабо його використання лише методами, описаними у класі Parent. Але це розширення тому таке приведення і відбувається неявно. І в додаткових матеріалах рівня 10 це було сказано: Your text to link...
Розширення означає перехід від конкретного типу до менш конкретного, тобто. перехід від дітей до батьків. У прикладі перетворення від будь-якого спадкоємця ( Child, Child2 ) до батька ( Parent ) є розширення, перехід до більш загального типу. Подібно до випадку з примітивними типами, цей перехід виробляється самої JVM при необхідності і непомітний для розробника, тобто не вимагає ніяких додаткових зусиль, оскільки він завжди проходить успішно: завжди можна звертатися до об'єкта, породженого від спадкоємця, на кшталт його батька. Parent p1 = New Child (); Parent p2 = New Child2 (); В обох рядках змінним типу Parent надається значення іншого типу, а отже, відбувається перетворення. Оскільки це розширення, воно відбувається автоматично і завжди успішно.
Другий рядок мого прикладу, навпаки, згідно з цими ж дод. матеріалам є звуженням що вимагає явної вказівки типу у дужках. А в лекції вона інтерпретується як розширення, що напевно неправильно. Поясніть, будь ласка. Не хочу мати подвійне суперечливе уявлення про наведення типів. Нижче наведено фрагмент лекції фрагмент лекції Були ще підозри на помилки в лекціях (попередніх) Куди про це писати? У FAQ не знайшов.
Коментарі
ЩОБ ПОДИВИТИСЯ ВСІ КОМЕНТАРІ АБО ЗАЛИШИТИ КОМЕНТАР,
ПЕРЕЙДІТЬ В ПОВНУ ВЕРСІЮ