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

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

9
Как проектирование для наследования может вызвать дополнительные расходы? [закрыто]
Закрыто . Этот вопрос основан на мнении . В настоящее время он не принимает ответы. Хотите улучшить этот вопрос? Обновите вопрос, чтобы ответить на него фактами и цитатами, отредактировав этот пост . Закрыто 6 лет назад . Так что я хотел унаследовать от sealed classв csharp и сгорел. Нет никакого …
12 c#  inheritance 

2
Почему Java не поддерживает частное / защищенное наследование, такое как C ++? [закрыто]
В настоящее время этот вопрос не очень подходит для нашего формата вопросов и ответов. Мы ожидаем, что ответы будут подтверждены фактами, ссылками или опытом, но этот вопрос, скорее всего, вызовет дебаты, споры, опрос или расширенное обсуждение. Если вы считаете, что этот вопрос можно улучшить и, возможно, вновь открыть, обратитесь за …

4
Параллельные иерархии - частично одинаковые, частично разные
Есть довольно много подобных вопросов там 1 ,2 ,3 ,4 , но в этом вопросе, похоже, не совсем так, и решения не кажутся оптимальными. Это общий вопрос ООП, предполагая, что полиморфизм, дженерики и миксины доступны. Фактический язык, который нужно использовать - это OOP Javascript (Typescript), но это та же проблема …

5
Должен ли я предпочесть композицию или наследование в этом сценарии?
Рассмотрим интерфейс: interface IWaveGenerator { SoundWave GenerateWave(double frequency, double lengthInSeconds); } Этот интерфейс реализован рядом классов, которые генерируют волны различной формы (например, SineWaveGeneratorи SquareWaveGenerator). Я хочу реализовать класс, который генерирует SoundWaveмузыкальные данные, а не необработанные звуковые данные. Он получит имя заметки и длину в виде ударов (не секунд) и внутренне …

5
Отдельный интерфейс для методов мутации
Я работал над рефакторингом некоторого кода, и я думаю, что, возможно, сделал первый шаг по кроличьей норе. Я пишу пример на Java, но я полагаю, что он может быть агностиком. У меня есть интерфейс, Fooопределенный как public interface Foo { int getX(); int getY(); int getZ(); } И реализация как …

9
Какой ОО дизайн использовать (есть ли шаблон дизайна)?
У меня есть два объекта, которые представляют «Бар / Клуб» (место, где вы пьете / общаетесь). В одном сценарии мне нужно имя бара, адрес, расстояние, слогон В другом сценарии мне нужно название бара, адрес, URL сайта, логотип Итак, у меня есть два объекта, представляющих одно и то же, но с …

5
Как реализовать наследование RealNumber и ComplexNumber?
Надеюсь, не слишком академично ... Допустим, мне нужны реальные и комплексные числа в моей библиотеке SW. На основе отношения is-a (или здесь ) действительное число представляет собой комплексное число, где b в мнимой части комплексного числа просто 0. С другой стороны, моя реализация состояла бы в том, что этот дочерний …

5
Можно ли когда-нибудь нарушать LSP?
Я занимаюсь этим вопросом , но переключаюсь с кода на принцип. Исходя из моего понимания принципа подстановки Лискова (LSP), какие бы методы ни находились в моем базовом классе, они должны быть реализованы в моем подклассе, и, согласно этой странице, если вы переопределяете метод в базовом классе и он ничего не …

1
Есть ли ситуация, когда было бы лучше использовать слабые ссылки вместо простой композиции?
Хотя в документах Java указано, что слабые ссылки предназначены главным образом для канонизации отображений, вы обнаружите, что многие , многие , многие люди в Интернете заявляют, что WeakHashMap идеально подходит для хранения метаданных объекта в течение его срока службы. Тем не менее, никто не мешает сделать понятный и соответствующий пример. …

2
Является ли наследование Python стилем наследования «как есть» или композиционным стилем?
Учитывая, что Python допускает множественное наследование, как выглядит идиоматическое наследование в Python? В языках с единичным наследованием, таких как Java, наследование будет использоваться, когда вы можете сказать, что один объект «a-a» другого объекта и вы хотите разделить код между объектами (от родительского объекта до дочернего объекта). Например, вы можете сказать, …

3
Наследование: действительно ли код из суперкласса * скопирован * в подкласс, или на него ссылается подкласс *?
Класс Subявляется подклассом класса Sup. Что это значит практически? Или, другими словами, каково практическое значение слова «наследование»? Вариант 1: Код из Sup фактически скопирован в Sub. (как в 'copy-paste', но без скопированного кода, визуально видимого в подклассе). Пример: methodA()метод изначально в Sup. Sub расширяет Sup, поэтому methodA()(виртуально) копируется в Sub. …

12
Является ли «если метод повторно используется без изменений, поместите метод в базовый класс или создайте интерфейс», это хорошее правило?
Мой коллега придумал эмпирическое правило для выбора между созданием базового класса или интерфейса. Он говорит: Представьте себе каждый новый метод, который вы собираетесь реализовать. Для каждого из них рассмотрим следующее: будет ли этот метод реализован более чем одним классом именно в этой форме, без каких-либо изменений? Если ответ «да», создайте …

2
Почему использование конструкторов не рекомендуется при создании прототипов?
Краткая справка: в JavaScript функция конструктора для каждого типа объекта имеет prototypeсвойство. prototypeОтносится к объекту , который каждый построенный объект использует в качестве следующего шага вверх в своей цепи прототипов. Если вы хотите, чтобы один тип был присущ другому типу, вы можете установить prototypeдля дочернего типа новый экземпляр родительского типа. …

6
Почему подклассы слишком плохи (и, следовательно, почему мы должны использовать прототипы, чтобы покончить с этим)?
Я читал о шаблонах проектирования и читал, что шаблон проектирования прототипа избавляет от чрезмерного создания подклассов. Почему подклассы плохо? Какое преимущество даст использование прототипа по сравнению с подклассами?

5
Интерфейс и наследование: лучшее из обоих миров?
Я «открыл» интерфейсы и начал любить их. Прелесть интерфейса в том, что это контракт, и любой объект, который выполняет этот контракт, может использоваться везде, где требуется этот интерфейс. Проблема с интерфейсом состоит в том, что у него не может быть реализации по умолчанию, что является проблемой для мирских свойств и …

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