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

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

5
Як визначати, що метод може бути замінений більш сильним зобов'язанням, ніж визначення того, що метод може бути названий?
Від: http://www.artima.com/lejava/articles/designprinciples4.html Еріх Гамма: Я все ще думаю, що це правда навіть через десять років. Спадкування - це класний спосіб змінити поведінку. Але ми знаємо, що він крихкий, тому що підклас може легко робити припущення щодо контексту, в якому називається метод, який він перекриває. Між базовим класом і підкласом існує …

5
Коли я повинен розширити клас Java Swing?
Моє сучасне розуміння реалізації Успадкування полягає в тому, що слід розширювати клас лише тоді, коли є відношення IS-A . Якщо батьківський клас може додатково мати більш конкретні дочірні типи з різною функціональністю, але вони матимуть спільні елементи, абстраговані у батьків. Я ставлю під сумнів це розуміння через те, що рекомендує …


3
Чи розробка Java зазвичай передбачає більше підкласингу, ніж C # /. NET?
Нещодавно я почав дивитися на розробку Android. Це повернуло мене у світ розробки програмного забезпечення Java. Останній раз, коли я працював з Java, зізнаюся, я не зрозумів OOP майже так само, як (я думаю) зараз. В основному використовуючи C # у своїй кар'єрі, я помічаю приголомшливу різницю в тому, як …

5
Чи поєднує Python суміш проти схеми?
Я цілком усвідомлюю, що pylintта інші інструменти статичного аналізу не є всезнаючими, і іноді їхні поради повинні бути не дотримані. (Це стосується різних класів повідомлень, а не лише conventions.) Якщо у мене є заняття на кшталт class related_methods(): def a_method(self): self.stack.function(self.my_var) class more_methods(): def b_method(self): self.otherfunc() class implement_methods(related_methods, more_methods): def …

10
Чи добре мати об’єкти, які створюють себе, навіть якщо це забруднює API їхніх підкласів?
У мене є базовий клас, Base. Він має два підкласи Sub1та Sub2. Кожен підклас має деякі додаткові методи. Наприклад, Sub1має Sandwich makeASandwich(Ingredients... ingredients)і Sub2має boolean contactAliens(Frequency onFrequency). Оскільки ці методи приймають різні параметри і роблять абсолютно різні речі, вони абсолютно несумісні, і я не можу просто використати поліморфізм для вирішення …

7
Чому конструктори не успадковуються?
Мене бентежить, які проблеми можуть бути, якби конструктор успадкував базовий клас. Cpp Primer Plus каже: Конструктори відрізняються від інших класових методів тим, що вони створюють нові об'єкти, тоді як інші методи викликаються існуючими об'єктами . Це одна з причин, що конструктори не успадковуються . Успадкування означає, що похідний об'єкт може …
33 c++  inheritance 

10
Чи є "Parent x = new Child ();" замість "Child x = new Child ();" поганою практикою, якщо ми можемо використовувати останнє?
Наприклад, я бачив деякі коди, які створюють такий фрагмент: Fragment myFragment=new MyFragment(); який оголошує змінну як фрагмент замість MyFragment, який MyFragment є дочірнім класом Fragment. Я не задоволений цим рядком кодів, тому що я думаю, що цей код повинен бути: MyFragment myFragment=new MyFragment(); Що конкретніше, це правда? Або в узагальненні …


7
Чи слід перевірити успадковані методи?
Припустимо , у мене є клас менеджера , отриманий з базового класу Employee , і що службовець має метод getEmail () , яка успадковується диспетчера . Чи слід перевірити, що поведінка методу getEmail () менеджера насправді така сама, як у працівника? На час написання цих тестів поведінка буде однаковою, але, …

4
Наскільки прототипне успадкування практично відрізняється від класичного успадкування?
Спадщина, поліморфізм та інкапсуляція - це три найвиразніші, важливі особливості ООП, і від них успадкування в наші дні має високу статистику використання. Я вивчаю JavaScript, і тут вони всі кажуть, що він має прототипне успадкування, і люди скрізь кажуть, що це щось набагато відмінне від класичного успадкування. Однак я не …

5
Багато малих класів проти логічного (але) складного успадкування
Мені цікаво, що краще в плані хорошого дизайну OOP, чистого коду, гнучкості та уникнення запахів коду в майбутньому. Образна ситуація, коли у вас є дуже багато подібних об'єктів, які вам потрібно представити як класи. Ці класи не мають жодної конкретної функціональності, просто класи даних і відрізняються лише назвою (і контекстом) …

3
Чи існують мови OO без успадкування?
Під час огляду коду сьогодні мій колега сказав щось цікаве: prototypeкорисна лише тоді, коли вам потрібна спадщина - а коли спадщина колись гарна ідея ? Я подумав над цим і зрозумів, що зазвичай використовую спадщину, щоб обійти код, який був погано розроблений в першу чергу. Сучасний стиль OO віддає перевагу …

3
Найкращий дизайн для форм Windows, які матимуть спільний функціонал
Раніше я використовував успадкування, щоб дозволити розширення форм Windows у своїй програмі. Якщо всі мої форми мали б загальні елементи управління, твори мистецтва та функціональність, я створив б базову форму, що реалізує загальні елементи керування та функціональні можливості, а потім дозволю іншим елементам управління успадковувати цю базову форму. Однак у …

3
Як посилення передумов і ослаблення посткондукцій порушує принцип заміни Ліскова?
Я читав, що принцип заміни Ліскова порушується, якщо: Передумови посилюються, або Послідовності ослаблені Але я ще не розумію, як ці два пункти порушили б принцип заміни Ліскова. Може хтось, будь-ласка, поясніть на прикладі. Зокрема, як будь-яка з перерахованих вище умов спричинить ситуацію, коли об'єкт підкласу не може бути замінений об’єктом …

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