JavaRush /Курси /Java Syntax Zero /Додаткові лекції до рівня

Додаткові лекції до рівня

Java Syntax Zero
Рівень 18 , Лекція 9
Відкрита

Відносини між класами. Успадкування, композиція, агрегація

У програмуванні ви швидко зрозумієте, наскільки важливо не писати зайвого обсягу коду. На щастя, в Java є все необхідне для витонченого «скорочення» коду. У цій лекції наочно описані відносини між класами: успадкування, композиція, агрегація. Приготуйтеся: буде багато цікавих прикладів.

Принципи інкапсуляції

Інкапсуляція, приховування — це різні поняття чи одне й те саме? З базовим варіантом інкапсуляції ви вже стикалися не раз. Якщо хочете знати, як «приховати» від користувача складні механізми роботи своєї програми й залишити перед очима тільки зручний інтерфейс, радимо уважно прочитати цю лекцію.

Для чого в Java потрібні інтерфейси

У цій лекції детально й без поспіху описано, що таке інтерфейси і чому вони з'явилися в мові. А ще ви дізнаєтеся про популярні інтерфейси в Java. Приготуйтеся — ця тема має продовження!

Різниця між абстрактними класами та інтерфейсами

У цій лекції поговоримо про те, чим абстрактні класи відрізняються від інтерфейсів і розглянемо приклади з поширеними абстрактними класами.

Ми присвятили відмінностям абстрактного класу від інтерфейсу окрему лекцію, тому що це дуже важлива тема. Про різницю між цими поняттями вас запитають на 90 % майбутніх співбесід. Тому обов'язково розберіться з прочитаним, а якщо щось не зрозумієте до кінця, почитайте додаткові джерела.


18
Опитування
Знайомство з ООП, рівень 18, лекція 9
Недоступний
Знайомство з ООП
Знайомство з ООП
Коментарі (7)
ЩОБ ПОДИВИТИСЯ ВСІ КОМЕНТАРІ АБО ЗАЛИШИТИ КОМЕНТАР,
ПЕРЕЙДІТЬ В ПОВНУ ВЕРСІЮ
Olexandr Рівень 47
4 лютого 2024
Питання 3 - не правильно запрограмована відповідь! Чи можна присвоїти змінній класу-спадкоємця посилання на об'єкт базового класу? Можна, але потрібно явно вказати перетворення!!! Але тест потребує відповіді НІ!

public class SClass extends Outer{
	
SClass a = (SClass) new Outer();
такий код працює!
Dmytro Рівень 26
24 червня 2024
компилятор то пропустит, но код же нерабочий в рантайме так что какой смысл в таком коде?
IronMan57 Рівень 28
17 січня 2025
Я також допустив цю помилку, але в загальному випадку правильна відповідь саме "ні". Наприклад, ми маємо базовий клас Animal та успадковані від нього класи Cat і Dog. Приклад працюючого коду:

Animal myasopolk = new Cat;
Animal zashibis = new Dog;
Cat myFavoriteCat = (Cat) myasopolk;
Але цей код працює тільки тому, що змінна myasopolk типу базового класу зберігає посилання на об'єкт-спадкоємець. Але, якщо в третьому рядку буде інша команда:

...
...
Cat myFavoriteCat = (Cat) zashibis;
то ми спіймаємо виняток. Тому в загальному випадку на питання: "Чи можна присвоїти змінній класу-спадкоємця посилання на об'єкт базового класу?" правильна відповідь "Ні". Я так думаю ☝
Jane Fox Рівень 26
22 листопада 2023
Цей рівень, і тема ООП взагалі мені дуже сподобались. Задачі йшли як горішки. Тест 8/10, є над чим попрацювати👌
Sava_crosava Рівень 23
31 жовтня 2023
Питання прості але заплутані) Не вважаю це катастрофою(хоча 5 з 10 це дуже погано)
[V.I.R.U.S.] Рівень 24 Expert
16 квітня 2023
Найгірший мій тест((( 5 з 10-ти
Pavlo Kezin Рівень 23
1 жовтня 2023
я теж... ще гірше 4/10