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

Наследование - это способ повторного использования кода существующих объектов или создания подтипа из существующего объекта или обоих, в зависимости от поддержки языка программирования.

5
Как определить, что метод может быть переопределен более сильным обязательством, чем определение, что метод может быть вызван?
От: http://www.artima.com/lejava/articles/designprinciples4.html Эрих Гамма: Я все еще думаю, что это правда, даже после десяти лет. Наследование - это крутой способ изменить поведение. Но мы знаем, что это хрупко, потому что подкласс может легко делать предположения о контексте, в котором вызывается метод, который он переопределяет. Между базовым классом и подклассом существует …

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


3
В разработке Java обычно используется больше подклассов, чем в C # / .NET?
Я недавно начал смотреть на разработку Android. Это вернуло меня в мир разработки программного обеспечения на Java. В прошлый раз, когда я работал с Java, я должен признать, что ООП я не понимал почти так же, как (я думаю), что я делаю сейчас. Поскольку я в основном использовал C # …

5
Являются ли Python mixins анти-паттерном?
Я полностью осознаю, что pylintи другие инструменты статического анализа не являются всезнающими, и иногда их советам нужно не подчиняться. (Это относится к различным классам сообщений, а не только к convention.) Если у меня есть классы, такие как 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): …

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(); которая объявляет переменную как Fragment вместо MyFragment, а MyFragment является дочерним классом Fragment. Я не удовлетворен этой строкой кодов, потому что я думаю, что этот код должен быть: MyFragment myFragment=new MyFragment(); что более конкретно, это правда? Или в …


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

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

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

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

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

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

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.