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

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

Відкрита

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

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

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

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

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

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

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

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

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


Коментарі (7)
  • популярні
  • нові
  • старі
Щоб залишити коментар, потрібно ввійти в систему
Olexandr
Рівень 16
4 лютого 2024, 18:02
Питання 3 - не правильно запрограмована відповідь! Чи можна присвоїти змінній класу-спадкоємця посилання на об'єкт базового класу? Можна, але потрібно явно вказати перетворення!!! Але тест потребує відповіді НІ!
public class SClass extends Outer{

SClass a = (SClass) new Outer();
такий код працює!
Dmytrii
Рівень 70
24 червня 2024, 13:22
компилятор то пропустит, но код же нерабочий в рантайме так что какой смысл в таком коде?
IronMan57
Рівень 28
17 січня 2025, 23:07
Я також допустив цю помилку, але в загальному випадку правильна відповідь саме "ні". Наприклад, ми маємо базовий клас 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, 18:49
Цей рівень, і тема ООП взагалі мені дуже сподобались. Задачі йшли як горішки. Тест 8/10, є над чим попрацювати👌
Sava_crosava Професор кулінарних наук в НУ "Собачий рай"
31 жовтня 2023, 20:40
Питання прості але заплутані) Не вважаю це катастрофою(хоча 5 з 10 це дуже погано)
[V.I.R.U.S.]
Рівень 24
Expert
16 квітня 2023, 17:00
Найгірший мій тест((( 5 з 10-ти
Pavlo Kezin
Рівень 23
1 жовтня 2023, 12:07
я теж... ще гірше 4/10