Запропонувати правкуПокращити цю статтюДопрацюйте відповідь до «Чому LSP пов'язаний з успадкуванням?». Ваші зміни проходять модерацію перед публікацією.Потрібне підтвердженняКонтентЩо ви змінюєте🇺🇸EN🇺🇦UAПереглядЗаголовок (UA)Коротка відповідь (UA)**LSP пов'язаний з успадкуванням**, тому що цей принцип визначає, як повинно працювати успадкування, щоб поліморфізм лишався коректним і безпечним. **Ключове:** якщо LSP порушено, решта принципів SOLID (SRP, OCP, ISP, DIP) теж починають ламатися, тому що абстракції перестають бути надійними.Показується над повною відповіддю для швидкого нагадування.Відповідь (UA)ЗображенняLSP пов'язаний з успадкуванням тому, що цей принцип визначає, **як повинно працювати успадкування, щоб поліморфізм лишався коректним і безпечним**. Детальніше: ## 1. Успадкування передбачає підстановку дочірнього класу замість батьківського Головна мета успадкування - дати можливість використовувати об'єкт нащадка там, де очікується об'єкт батьківського класу. Поліморфізм працює тільки тоді, коли така поведінка безпечна. ## 2. LSP визначає правила коректного поліморфізму Нащадок зобов'язаний зберігати сенс і контракт батьківського класу. Якщо нащадок змінює поведінку так, що клієнтський код перестає працювати коректно, успадкування використовується неправильно. ## 3. Успадкування без LSP ламає систему типів Якщо підклас не можна підставити замість базового класу, успадкування перетворюється на джерело помилок: - клієнт повинен перевіряти типи (`if obj is Child`), - OCP порушується, - абстракції перестають працювати, - код стає крихким. LSP запобігає таким ситуаціям. ## 4. Успадкування створює контракт, якого підклас зобов'язаний дотримуватися Контракт включає: - допустимі вхідні параметри, - гарантовані результати, - інваріанти стану, - допустимі винятки. LSP каже: нащадок **не має права порушувати** цей контракт. ## 5. Без LSP успадкування втрачає сенс як механізм розширення Якщо нащадок поводиться інакше, ніж очікує клієнт, то успадкування більше не дає переваги - воно стає джерелом регресій. ## 6. LSP - фундамент застосування успадкування в SOLID Усі принципи SOLID спираються на те, що успадкування працює коректно. Якщо LSP порушено, решта принципів (SRP, OCP, ISP, DIP) теж починають ламатися, тому що абстракції перестають бути надійними. Підсумок: **LSP пов'язаний з успадкуванням, тому що саме він визначає, коли успадкування є коректним: підклас повинен повністю зберігати контракт батьківського класу, щоб його можна було підставити в будь-який код, що використовує базовий тип, без зміни поведінки програми.**Для рев’юераПримітка для модератора (необов’язково)Бачить лише модератор. Прискорює рев’ю.