Запитання з тегом «inheritance»

Спадкування - це спосіб повторного використання коду існуючих об'єктів або встановлення підтипу з існуючого об'єкта або обох, залежно від підтримки мови програмування.

4
Спадщина проти міксин в динамічних мовах?
Коли вам слід віддати перевагу моделям успадкування над комбінаціями в динамічних мовах? Під mixins я маю на увазі фактичне правильне змішання, як при вставці функцій та членів даних в об’єкт під час виконання. Коли ви використовували б, наприклад, прототипічне успадкування замість міксинів? Щоб більш наочно проілюструвати, що я маю на …

1
Чому (/ зробив) Бертран Мейєр вважає, що підкласифікація - єдиний спосіб розширити «закритий» модуль?
У « Об’єктно-орієнтованій програмі» ( Майєр ) він визначає принцип відкритого / закритого типу : Модуль, як кажуть, буде відкритим, якщо він ще доступний для розширення. Наприклад, має бути можливість додати поля до структур даних, які він містить, або нових елементів до набору функцій, які він виконує. Кажуть, що модуль …

3
Чи існує конкретна назва парадоксу «Квадратний спадок від прямокутника»?
Певний збій OOP показаний із класом Square, що успадковується від Rectangle, де логічно Square є спеціалізацією прямокутника, і тому слід успадковувати його, але все розпадається при спробі змінити довжину або ширину квадрата. Чи є конкретний термін для опису того, що йде в цьому випадку не так?

5
Коли використовувати спадщину, коли використовувати "просто булеве поле"?
У нашому додатку Rails ми додаємо сповіщення. Деякі з них такі blocking: вони зупиняють хід виконання будь-якого ресурсу, до якого вони додаються, оскільки деякої інформації про цей ресурс бракує. Інші сповіщення - це прості сповіщення та надають лише інформацію. Сьогодні я мав дискусію з іншим програмістом нашої команди. Я створив …

4
Чому на Java не існує модифікатора доступу лише для підкласів?
У Java є чотири доступні модифікатори доступу для методів: public - будь-який клас може використовувати цей метод. protected - класи в одному пакеті і підкласи в будь-якому пакеті можуть використовувати цей метод. private - лише цей клас може використовувати цей метод. no modifier ("пакет приватний") - цей клас можуть використовувати …

4
Коли перенести загальне поле в базовий клас?
Наразі у мене є два похідні класи, Aі в Bобох є спільне поле, і я намагаюся визначити, чи повинен він переходити до базового класу. На нього ніколи не посилається базовий клас, і скажіть, якщо в якийсь момент по дорозі виведений інший клас C, який не має _field1, тоді не було …

14
Як я можу пояснити корисність спадкування? [зачинено]
Наразі це запитання не підходить для нашого формату запитань. Ми очікуємо, що відповіді будуть підкріплені фактами, посиланнями або експертними знаннями, але це питання, ймовірно, вимагатиме дискусій, аргументів, опитувань чи розширеної дискусії. Якщо ви вважаєте, що це питання можна вдосконалити та, можливо, знову відкрити, відвідайте довідковий центр для ознайомлення . Закрито …

1
Як перевірити принцип заміщення Ліскова в ієрархії спадкування?
Натхненний цією відповіддю: Принцип заміщення Ліскова вимагає цього Передумови не можна посилити в підтипі. Послідовності не можуть бути ослаблені в підтипі. Інваріанти супертипу повинні зберігатися в підтипі. Обмеження історії ("правило історії"). Об'єкти вважаються модифікованими лише завдяки їх методам (інкапсуляція). Оскільки підтипи можуть вводити методи, відсутні в супертипі, то введення цих …

6
Реальні сценарії для захищених методів
Сьогодні я помітив, що я в основному ніколи не використовую protectedметоди в коді С ++, тому що рідко відчуваю потребу викликати некритичні методи батьків. Я використовую захищені в Java схему методу шаблону, але оскільки ви можете перекрити приватні методи в C ++, мені це також не потрібно protected. Отже, які …

8
"Віддавайте перевагу складу над спадщиною" - Є єдиною причиною захисту від змін підпису?
Ця сторінка виступає за склад над успадкуванням наступним аргументом (перефразовуючи це моїми словами): Зміна підпису методу надкласу (який не був переосмислений у підкласі) спричиняє додаткові зміни у багатьох місцях, коли ми використовуємо Inheritance. Однак, коли ми використовуємо Composition, необхідна додаткова зміна є лише в одному місці: Підклас. Це насправді єдина …

2
Як я можу уникати запису багато пропускних функцій у обгортку?
У мене є клас, який обгортає інший клас загального базового типу. Оскільки інтерфейс базового типу досить великий, це передбачає написання безлічі функцій проходження. Я шукаю спосіб уникнути цього. Давайте зробимо приклад: Car / \ Volvo VolvoWithTrailer Тепер я маю реалізувати кожну функцію в автомобільному інтерфейсі для VolvoWithTrailer і викликати відповідну …

3
Склад над спадщиною, але
Я намагаюся навчити себе інженерії програмного забезпечення і зустрічаюсь із суперечливою інформацією, яка мене бентежить. Я вивчав OOP, що таке абстрактні класи / інтерфейси та як ними користуватися, але потім я читаю, що слід «надавати перевагу композиції над успадкуванням». Я розумію склад - це коли один клас створює / створює …

2
Чому базовий клас повинен мати тут віртуальний деструктор, якщо похідний клас не виділяє необробленої динамічної пам'яті?
Наступний код викликає витік пам'яті: #include <iostream> #include <memory> #include <vector> using namespace std; class base { void virtual initialize_vector() = 0; }; class derived : public base { private: vector<int> vec; public: derived() { initialize_vector(); } void initialize_vector() { for (int i = 0; i < 1000000; i++) { …

5
Спадщина проти додаткової властивості з нульовим значенням
Чи краще для класів з необов’язковими полями використовувати успадкування або властивість, що зводиться нанівець? Розглянемо цей приклад: class Book { private String name; } class BookWithColor extends Book { private String color; } або class Book { private String name; private String color; //when this is null then it is …
12 java  inheritance  class  null 

3
Чи вважається інтерфейс "порожнім", якщо він успадковується від інших інтерфейсів?
Наскільки я можу сказати, порожні інтерфейси вважають поганою практикою - особливо там, де такі речі, як атрибути, підтримуються мовою. Однак чи вважається інтерфейс "порожнім", якщо він успадковується від інших інтерфейсів? interface I1 { ... } interface I2 { ... } //unrelated to I1 interface I3 : I1, I2 { // …

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.