public class Main {
interface A {
int a();
}
static class B implements A {
@Override
public int a() {
return 1;
}
}
static class C implements A {
@Override
public int a() {
return 2;
}
}
static class D1 implements A {
@Override
public int a() {
return (new B()).a() + (new C()).a();
}
}
static class D2 implements A {
private B b;
private C c;
public D2(B b, C c) {
this.b = b;
this.c = c;
}
@Override
public int a() {
return b.a() + c.a();
}
}
public static void main
(String[] args
) { B b = new B();
C c = new C();
D1 d1 = new D1();
D2 d2 = new D2(b, c);
System.
out.
format("B = %d%n", b.
a()); System.
out.
format("C = %d%n", c.
a()); System.
out.
format("D1 = %d%n", d1.
a()); System.
out.
format("D2 = %d%n", d2.
a()); }
}
cHVibGljIGNsYXNzIE1haW4gewogICAgaW50ZXJmYWNlIEEgewogICAgICAgIGludCBhKCk7CiAgICB9CgogICAgc3RhdGljIGNsYXNzIEIgaW1wbGVtZW50cyBBIHsKICAgICAgICBAT3ZlcnJpZGUKICAgICAgICBwdWJsaWMgaW50IGEoKSB7CiAgICAgICAgICAgIHJldHVybiAxOwogICAgICAgIH0KICAgIH0KCiAgICBzdGF0aWMgY2xhc3MgQyBpbXBsZW1lbnRzIEEgewogICAgICAgIEBPdmVycmlkZQogICAgICAgIHB1YmxpYyBpbnQgYSgpIHsKICAgICAgICAgICAgcmV0dXJuIDI7CiAgICAgICAgfQogICAgfQoKICAgIHN0YXRpYyBjbGFzcyBEMSBpbXBsZW1lbnRzIEEgewogICAgICAgIEBPdmVycmlkZQogICAgICAgIHB1YmxpYyBpbnQgYSgpIHsKICAgICAgICAgICAgcmV0dXJuIChuZXcgQigpKS5hKCkgKyAobmV3IEMoKSkuYSgpOwogICAgICAgIH0KICAgIH0KCgogICAgc3RhdGljIGNsYXNzIEQyIGltcGxlbWVudHMgQSB7CiAgICAgICAgcHJpdmF0ZSBCIGI7CiAgICAgICAgcHJpdmF0ZSBDIGM7CgogICAgICAgIHB1YmxpYyBEMihCIGIsIEMgYykgewogICAgICAgICAgICB0aGlzLmIgPSBiOwogICAgICAgICAgICB0aGlzLmMgPSBjOwogICAgICAgIH0KCiAgICAgICAgQE92ZXJyaWRlCiAgICAgICAgcHVibGljIGludCBhKCkgewogICAgICAgICAgICByZXR1cm4gYi5hKCkgKyBjLmEoKTsKICAgICAgICB9CiAgICB9CgogICAgcHVibGljIHN0YXRpYyB2b2lkIG1haW4oU3RyaW5nW10gYXJncykgewogICAgICAgIEIgYiA9IG5ldyBCKCk7CiAgICAgICAgQyBjID0gbmV3IEMoKTsKICAgICAgICBEMSBkMSA9IG5ldyBEMSgpOwogICAgICAgIEQyIGQyID0gbmV3IEQyKGIsIGMpOwogICAgICAgIAogICAgICAgIFN5c3RlbS5vdXQuZm9ybWF0KCJCID0gJWQlbiIsIGIuYSgpKTsKICAgICAgICBTeXN0ZW0ub3V0LmZvcm1hdCgiQyA9ICVkJW4iLCBjLmEoKSk7CiAgICAgICAgU3lzdGVtLm91dC5mb3JtYXQoIkQxID0gJWQlbiIsIGQxLmEoKSk7CiAgICAgICAgU3lzdGVtLm91dC5mb3JtYXQoIkQyID0gJWQlbiIsIGQyLmEoKSk7CiAgICB9Cn0=