Если исходной целью было переопределить doSomethingElse, то при использовании вместо этого Composition в Bar вы делегировали бы все другие методы (в данном случае doSomething) для Foo и добавили свое переопределенное поведение в Bar.doSomethingElse ()
Так что это может быть что-то вроде:
public void doSomethingElse() {
.... // custom stuff
foo.doSomethingElse(); // this is the equivalent of an inheritance super call, so it's optional
.... // other custom stuff
}
Также (независимо от исходного вопроса, но я не могу не упомянуть его), чтобы создать лучший код, вы должны внедрить зависимость Foo, а не связывать ее с Bar.
class Bar implements SomeMethod {
private final SomeMethod foo;
public Bar(SomeMethod foo) {
this.foo = foo;
}
public void doSomething() { foo.doSomething(); }
public void doSomethingElse() { // do something else! }
}