 <p>Decorator pattern might come in handy</p> <pre><code> class S2 extends S { S s; S2(S s) { this.s = s; } // delegate method calls to wrapped B1-B5 instance @Override void oldMethod1() { s.oldMethod1(); } ... // add new methods void newMetod1() { ... } } </code></pre> <p>then use it as </p> <pre><code>new S2(new B1()); </code></pre> <p>or on an existing instance of B1 </p> <pre><code>new S2(b1); </code></pre>