Вопросы с тегом «inheritance»

33
Почему конструкторы не наследуются?

Я не понимаю, какие могут быть проблемы, если конструктор был унаследован от базового класса. Cpp Primer Plus говорит, Конструкторы отличаются от других методов класса тем, что они создают новые объекты, тогда как другие методы вызываются существующими объектами . Это одна из причин, почему...

33
Разве это нормально иметь объекты, которые приводятся сами, даже если это загрязняет API их подклассов?

У меня есть базовый класс Base. У него есть два подкласса, Sub1и Sub2. Каждый подкласс имеет несколько дополнительных методов. Например, Sub1имеет Sandwich makeASandwich(Ingredients... ingredients)и Sub2имеет boolean contactAliens(Frequency onFrequency). Поскольку эти методы принимают разные...

32
Является ли «Parent x = new Child ();» вместо «Child x = new Child ();» плохой практикой, если мы можем использовать последний?

Например, я видел несколько кодов, которые создают такой фрагмент: Fragment myFragment=new MyFragment(); которая объявляет переменную как Fragment вместо MyFragment, а MyFragment является дочерним классом Fragment. Я не удовлетворен этой строкой кодов, потому что я думаю, что этот код должен быть:...

30
Должен ли я проверить унаследованные методы?

Предположим, у меня есть класс Manager, производный от базового класса Employee , и у этого Employee есть метод getEmail (), который наследуется Manager . Должен ли я проверить, что поведение метода getEmail () менеджера на самом деле такое же, как и у сотрудника? На момент написания этих тестов...

27
Чем прототипное наследование практически отличается от классического наследования?

Наследование, полиморфизм и инкапсуляция являются тремя наиболее отличительными и важными особенностями ООП, и в наши дни наследование имеет высокую статистику использования. Я изучаю JavaScript, и здесь все говорят, что он имеет прототипное наследование, и люди повсюду говорят, что это что-то...

24
Много маленьких классов против логического (но) сложного наследования

Мне интересно, что лучше с точки зрения хорошего ООП-дизайна, чистого кода, гибкости и предотвращения запаха кода в будущем. Ситуация с изображением, когда у вас есть много очень похожих объектов, которые вы должны представлять как классы. Эти классы не имеют никакой конкретной функциональности,...

22
Существуют ли ОО-языки без наследования?

Во время сегодняшнего обзора кода мой коллега сказал что-то интересное: prototypeполезно только тогда, когда вам нужно наследование - и когда наследование когда-либо является хорошей идеей ? Я подумал об этом и понял, что обычно использую наследование, чтобы обойти код, который изначально был плохо...

20
Лучший дизайн для форм Windows, которые будут иметь общую функциональность

В прошлом я использовал наследование, чтобы разрешить расширение форм Windows в моем приложении. Если бы все мои формы имели общие элементы управления, графические объекты и функции, я бы создал базовую форму, реализующую общие элементы управления и функции, а затем позволил бы другим элементам...

19
Как усиление предусловий и ослабление постусловий нарушают принцип подстановки Лискова?

Я читал, что принцип замещения Лискова нарушается, если: Предпосылки усиливаются, или Постусловия ослаблены Но я еще не до конца понял, как эти два пункта нарушают принцип подстановки Лискова. Может кто-нибудь, пожалуйста, объясните на примере. В частности, каким образом любое из вышеперечисленных...

19
Почему (/ сделал) Бертран Мейер считает, что создание подклассов - единственный способ расширить «закрытый» модуль?

В Построении объектно-ориентированного программного обеспечения Мейера (1988) он определяет принцип открытия / закрытия следующим образом: Модуль будет считаться открытым, если он все еще доступен для расширения. Например, должна быть возможность добавить поля к структурам данных, которые он...

19
Наследование против миксинов в динамических языках?

Когда следует предпочитать шаблоны наследования миксинам в динамических языках? Под миксинами я имею в виду собственно правильное микширование, как при вставке функций и элементов данных в объект во время выполнения. Когда бы вы использовали, например, наследование прототипа вместо миксинов? Чтобы...

18
Нарушает ли множественное наследование принцип единой ответственности?

Если у вас есть класс, который наследует от двух разных классов, не означает ли это, что ваш подкласс автоматически делает (как минимум) 2 вещи, по одной от каждого суперкласса? Я считаю, что нет разницы, если у вас есть несколько интерфейсов наследования. Изменить: Чтобы было ясно, я считаю, что...

18
Когда использовать наследование, когда использовать «просто логическое поле»?

В нашем приложении Rails мы добавляем уведомления. Вот некоторые из них blocking: Они останавливают прогресс любого ресурса, к которому они добавлены, потому что некоторая информация об этом ресурсе отсутствует. Другие уведомления являются простыми уведомлениями и предоставляют только информацию....

18
Есть ли конкретное название для парадокса «Квадрат наследует от прямоугольника»?

Определенная ошибка ООП показана с классом Square, унаследованным от Rectangle, где логически Square является специализацией Rectangle и поэтому должен наследовать от него, но все рушится, когда вы пытаетесь изменить длину или ширину Square. Есть ли конкретный термин для описания того, что...

16
Как я могу объяснить полезность Наследования? [закрыто]

В настоящее время этот вопрос не очень подходит для нашего формата вопросов и ответов. Мы ожидаем, что ответы будут подтверждены фактами, ссылками или опытом, но этот вопрос, скорее всего, вызовет дебаты, споры, опрос или расширенное обсуждение. Если вы считаете, что этот вопрос можно улучшить и,...

16
Как Traits в Scala позволяют избежать «ошибки алмаза»?

(Примечание: я использовал «error» вместо «problem» в названии по понятным причинам ..;)). Я немного изучил черты характера в Scala. Они похожи на интерфейсы в Java или C #, но допускают реализацию метода по умолчанию. Мне было интересно: не может ли это привести к «проблеме алмазов», поэтому...

16
Почему в Java нет модификатора доступа «только для подклассов»?

В Java есть четыре доступных модификатора доступа для методов: public - любой класс может использовать этот метод. protected - классы в одном пакете и подклассы в любом пакете могут использовать этот метод. private - только этот класс может использовать этот метод. no modifier («пакет приватный») -...

16
Когда перемещать общее поле в базовый класс?

В настоящее время у меня есть два производных класса, Aи Bоба имеют общее поле, и я пытаюсь определить, должно ли оно перейти в базовый класс. На него никогда не ссылаются из базового класса, и говорят, что если в какой-то момент в будущем будет получен другой класс, Cкоторый не имеет _field1, то...

15
Правильный обходной путь для множественного наследования в Java (Android)

У меня есть концептуальная проблема с правильной реализацией кода, которая, по-видимому, требует множественного наследования, что не было бы проблемой во многих языках ОО, но поскольку проект для Android, такого понятия, как множественное, не существует extends. У меня есть куча деятельности,...