Вам, вероятно, придется использовать состав, т. Е. Иметь экземпляр вашего «родительского» класса в качестве члена вашего «дочернего» класса. («Parent» и «child» здесь обозначают отношения, которые были бы у двух классов, если бы вы использовали наследование.) Содержащий («child») класс должен затем обернуть интерфейс содержащегося («parent») класса, чтобы предоставить любую функциональность содержавшегося класса
Один из способов сгладить процесс обертывания - заставить и содержащийся, и содержащий класс реализовать один и тот же интерфейс - реализации методов этого интерфейса в содержащем классе могут тогда быть прямыми вызовами к одним и тем же методам в содержащемся классе.