public class Sub extends Super {
public Sub(Super underlying) {
this.underlying = (underlying == null)
? new Super()
: underlying;
}
@Override
public void method() {
underlying.method();
}
}
Since another object is being created, it's not exactly the same, but it behaves as expected.