Почему предпочитаешь композицию наследству? Какие компромиссы существуют для каждого подхода? Когда следует выбирать наследование над
Наследование - это система в объектно-ориентированном программировании, которая позволяет объектам поддерживать операции, определенные предшествующими типами, без необходимости предоставлять свое собственное определение. Это основной вектор полиморфизма в объектно-ориентированном программировании.
Почему предпочитаешь композицию наследству? Какие компромиссы существуют для каждого подхода? Когда следует выбирать наследование над
При планировании своих программ я часто начинаю с такой цепочки мыслей: Футбольная команда - это просто список футболистов. Поэтому я должен представить это с: var football_team = new List<FootballPlayer>(); Порядок в этом списке представляет порядок, в котором игроки перечислены в списке. Но...
Каковы различия между этими двумя фрагментами кода? Использование type(): import types if type(a) is types.DictType: do_something() if type(b) in types.StringTypes: do_something_else() Использование isinstance(): if isinstance(a, dict): do_something() if isinstance(b, str) or isinstance(b,...
Есть ли какая-либо причина для объявления класса наследовать object? Я только что нашел код, который делает это, и я не могу найти вескую причину, почему. class MyClass(object): # class code...
Страница « Область действия API» гласит: Область может наследоваться от родительской области. На странице Scope Guide Developer говорится: Область (прототипически) наследует свойства от своей родительской области. Итак, всегда ли дочерняя область прототипически наследуется от родительской области?...
В чем разница между public, privateи protectedнаследование в C ++? Все вопросы, которые я нашел на SO, касаются конкретных
В « Программировании Python » Марк Лутц упоминает «миксины». Я из C / C ++ / C # фона, и я не слышал этот термин раньше. Что такое миксин? Читая между строк этого примера (который я связал, потому что он довольно длинный), я предполагаю, что это случай использования множественного наследования для...
Я довольно новичок в объектно-ориентированном программировании на Python, и у меня возникают проблемы с пониманием этой super()функции (новые классы стилей), особенно когда речь идет о множественном наследовании. Например, если у вас есть что-то вроде: class First(object): def __init__(self): print...
Как настроить класс, представляющий интерфейс? Это просто абстрактный базовый
Этот рисунок снова показывает, что у каждого объекта есть прототип. Функция-конструктор Foo также имеет свой собственный, __proto__который является Function.prototype, и который, в свою очередь, также __proto__снова ссылается через свое свойство на Object.prototype. Таким образом, повторяю,...
Я немного озадачен тем, как дженерики Java обрабатывают наследование / полиморфизм. Предположим следующую иерархию - Животное (родитель) Собака - Кот (Дети) Итак, предположим, у меня есть метод doSomething(List<Animal> animals). По всем правилам наследования и полиморфизма я бы предположил,...
Кто-то упомянул это в IRC как проблему
Пожалуйста, объясните простым для понимания языком или ссылкой на какую-нибудь
При создании простой иерархии объектов в Python я хотел бы иметь возможность вызывать методы родительского класса из производного класса. В Perl и Java есть ключевое слово для этого ( super). В Perl я мог бы сделать это: package Foo; sub frotz { return "Bamf"; } package Bar; @ISA = qw(Foo); sub...
Как мне вызвать родительскую функцию из производного класса, используя C ++? Например, у меня есть класс с именем parentи класс, childкоторый является производным от parent. Внутри каждого класса есть printфункция. В определении функции печати ребенка я хотел бы вызвать функцию печати родителей....
Какая разница между: class Child(SomeBaseClass): def __init__(self): super(Child, self).__init__() а также: class Child(SomeBaseClass): def __init__(self): SomeBaseClass.__init__(self) Я видел, superчто довольно часто используется в классах с единственным наследованием. Я могу понять, почему вы...
Если класс Bи класс Cрасширяют класс, Aи у меня есть объект типа Bили C, как я могу определить, к какому типу он
В чем разница? Когда я должен использовать что? Почему их так
В одном из моих интервью меня попросили объяснить разницу между интерфейсом и классом Abstract . Вот мой ответ: Методы интерфейса Java неявно абстрактны и не могут иметь реализации. Абстрактный класс Java может иметь методы экземпляров, которые реализуют поведение по умолчанию. Переменные,...
Это может быть общий вопрос ООП. Я хотел сделать общее сравнение между интерфейсом и абстрактным классом на основе их использования. Когда нужно использовать интерфейс, а когда - абстрактный класс...