Допустим, у нас есть интерфес:
public interface I {
int a();
int b();
}
И есть его реализация:
public class IR implements I {
@Override
public int a() {
return 1;
}
@Override
public int b() {
return 2;
}
}
Хочется построить класс, который будет так же реализовывать I и для этого делегировать все запросы по I к инстансу IR. Можно сделать через композицию:
public class A implements I {
IR delegat = new IR();
@Override
public int a() {
return delegat.a();
}
@Override
public int b() {
return delegat.b();
}
}
Не красиво. Можно, конечно, через наследование:
public class B extends IR {
}
Но это вносит свои ограничения, например, я не могу менять делегата в процессе жизни. Поэтому хочется через композицию.
Понятно, что Java тут ничем помочь не сможет. А нет ли в других языках конструкций наподобие:
class B implements I {
IR delegat = new IR();
implements I by delegate;
}