Предположим, у меня есть классы:
class A : SuperType() {}
class B : SuperType() {}
class C : B() {}
Предположим, я не хочу, чтобы C
расширял B()
: я хочу, чтобы он расширял A()
, но теперь я хочу A
продлить B()
.
Как сделать, чтобы во время компиляции A
продлил B()
(или любой дочерний элемент SuperType()
) вместо только SuperType()
?Другими словами, как я могу сделать объявление класса A
универсальным, чтобы принять любого потомка SuperType()
?
Надеюсь, это было ясно.Я хотел бы сделать что-то вроде:
class B(whatever_it_receives_as_long_as_child_of_SuperType) : whatever_it_receives_as_long_as_child_of_SuperType()
class C : A(B()) // B is subtype of SuperType so it's ok