Чтобы упростить мой фактический код, скажем, есть два класса, один подкласс другого:
class Chair {
val canFold = false;
// ...
}
class FoldableChair extends Chair {
val canFold = true;
// ...
}
, и в моей реализации у меня будут потенциально сотни других подклассов Chair или FoldableChair:
class Armchair extends ... {}
class DeckChair extends ... {}
//... etc
Предположим, что для каждого из этих подклассов каждый имеет длинную реализацию, но я хочу иметь возможность иногда расширять его на Chair и иногда на FoldableChair - без дублирования кода.Я хотел бы сделать это без расширения самого подкласса.Возможно ли это как-то?Нужно ли мне использовать черты для этого?
Я также хотел бы иметь возможность создавать особые экземпляры подкласса, которые иногда расширяют Chair, а иногда расширяют FoldableChair, но этот выбор делается при его создании.Это тоже возможно?Спасибо!
Редактировать: чтобы уточнить, что я действительно хочу, это:
class Armchair extends Chair {}
class ArmchairFoldable extends FoldableChair {}
, но реализация Armchair и ArmchairFoldable абсолютно одинаковы.То есть я бы не хотел дублировать их реализации.