Композиция (хотя бы один, возможно, оба из "базовых" классов будет объектом-членом). И много прокси по мере необходимости (некоторые редакторы помогут вам здесь).
Yahoo Java OO!
Редактировать: Несмотря на то, что композиция - это "путь" (без изменения иерархии классов), существуют некоторые специфические ограничения в зависимости от того, как используются интерфейсы и именительные имена. Если вам нужно передать «определенный» тип (ModalWindow или SkinnableWindow) в любом месте, где вы находитесь в мире боли, поскольку ваш новый класс может иметь не более одного из них в качестве предка (поэтому, если он один или меньше, вы можете быть в состоянии ускользнуть). Использование интерфейсов и использование общих типов в максимально возможной степени может уменьшить этот вред.
Удачного кодирования.