class Main {
static class ClassA {
public int publicMember;
private int privateMember;
public static String publicStatic
= "Public Static"; private static String privateStatic
= "Private Static";
public ClassA(int x, int y) {
publicMember = x;
privateMember = y;
}
public int getPrivateMember() {
return privateMember;
}
public void setPrivateMember(int v) {
privateMember = v;
}
public static String getPrivateStatic
() { return privateStatic;
}
public static void setPrivateStatic
(String v
) { privateStatic = v;
}
public int calc() {
return publicMember + privateMember;
}
}
static class ClassB extends ClassA {
private int z;
public ClassB(int x, int y, int z) {
super(x, y);
this.z = z;
}
public int calc() {
return (super.calc() * z) + publicMember;
}
}
ClassA o1 = new ClassA(1, 2);
ClassA o2 = new ClassA(3, 4);
ClassB o3 = new ClassB(5, 6, 7);
ClassB o4 = new ClassB(8, 9, 10);
ClassB o5
= (ClassB
)o4.
getClass().
getConstructors()[0].
newInstance(new Integer(11),
new Integer(12),
new Integer(13));
System.
out.
println(o1.
calc()); System.
out.
println(o2.
calc()); System.
out.
println(o3.
calc()); System.
out.
println(o4.
calc()); System.
out.
println(o5.
calc());
ClassA.publicStatic = "Foo";
ClassA.setPrivateStatic("Bar");
System.
out.
println(ClassA.
publicStatic); System.
out.
println(ClassA.
getPrivateStatic()); System.
out.
println(ClassB.
publicStatic); System.
out.
println(ClassB.
getPrivateStatic()); System.
out.
println(o5.
publicStatic); System.
out.
println(o5.
getPrivateStatic()); }
}
Y2xhc3MgTWFpbiB7CiAgICBzdGF0aWMgY2xhc3MgQ2xhc3NBIHsKICAgICAgICBwdWJsaWMgaW50IHB1YmxpY01lbWJlcjsKICAgICAgICBwcml2YXRlIGludCBwcml2YXRlTWVtYmVyOwoKICAgICAgICBwdWJsaWMgc3RhdGljIFN0cmluZyBwdWJsaWNTdGF0aWMgPSAiUHVibGljIFN0YXRpYyI7CiAgICAgICAgcHJpdmF0ZSBzdGF0aWMgU3RyaW5nIHByaXZhdGVTdGF0aWMgPSAiUHJpdmF0ZSBTdGF0aWMiOwoKICAgICAgICBwdWJsaWMgQ2xhc3NBKGludCB4LCBpbnQgeSkgewogICAgICAgICAgICBwdWJsaWNNZW1iZXIgPSB4OwogICAgICAgICAgICBwcml2YXRlTWVtYmVyID0geTsKICAgICAgICB9CgogICAgICAgIHB1YmxpYyBpbnQgZ2V0UHJpdmF0ZU1lbWJlcigpIHsKICAgICAgICAgICAgcmV0dXJuIHByaXZhdGVNZW1iZXI7CiAgICAgICAgfQogICAgICAgIHB1YmxpYyB2b2lkIHNldFByaXZhdGVNZW1iZXIoaW50IHYpIHsKICAgICAgICAgICAgcHJpdmF0ZU1lbWJlciA9IHY7CiAgICAgICAgfQoKICAgICAgICBwdWJsaWMgc3RhdGljIFN0cmluZyBnZXRQcml2YXRlU3RhdGljKCkgewogICAgICAgICAgICByZXR1cm4gcHJpdmF0ZVN0YXRpYzsKICAgICAgICB9CiAgICAgICAgcHVibGljIHN0YXRpYyB2b2lkIHNldFByaXZhdGVTdGF0aWMoU3RyaW5nIHYpIHsKICAgICAgICAgICAgcHJpdmF0ZVN0YXRpYyA9IHY7CiAgICAgICAgfQoKICAgICAgICBwdWJsaWMgaW50IGNhbGMoKSB7CiAgICAgICAgICAgIHJldHVybiBwdWJsaWNNZW1iZXIgKyBwcml2YXRlTWVtYmVyOwogICAgICAgIH0KICAgIH0KCiAgICBzdGF0aWMgY2xhc3MgQ2xhc3NCIGV4dGVuZHMgQ2xhc3NBIHsKICAgICAgICBwcml2YXRlIGludCB6OwoKICAgICAgICBwdWJsaWMgQ2xhc3NCKGludCB4LCBpbnQgeSwgaW50IHopIHsKICAgICAgICAgICAgc3VwZXIoeCwgeSk7CiAgICAgICAgICAgIHRoaXMueiA9IHo7CiAgICAgICAgfQoKICAgICAgICBwdWJsaWMgaW50IGNhbGMoKSB7CiAgICAgICAgICAgIHJldHVybiAoc3VwZXIuY2FsYygpICogeikgKyBwdWJsaWNNZW1iZXI7CiAgICAgICAgfQogICAgfQoKICAgIHB1YmxpYyBzdGF0aWMgdm9pZCBtYWluKFN0cmluZ1tdIGFyZ3MpIHRocm93cyBFeGNlcHRpb24gewogICAgICAgIENsYXNzQSBvMSA9IG5ldyBDbGFzc0EoMSwgMik7CiAgICAgICAgQ2xhc3NBIG8yID0gbmV3IENsYXNzQSgzLCA0KTsKICAgICAgICBDbGFzc0IgbzMgPSBuZXcgQ2xhc3NCKDUsIDYsIDcpOwogICAgICAgIENsYXNzQiBvNCA9IG5ldyBDbGFzc0IoOCwgOSwgMTApOwogICAgICAgIENsYXNzQiBvNSA9IChDbGFzc0IpbzQuZ2V0Q2xhc3MoKS5nZXRDb25zdHJ1Y3RvcnMoKVswXS5uZXdJbnN0YW5jZShuZXcgSW50ZWdlcigxMSksIG5ldyBJbnRlZ2VyKDEyKSwgbmV3IEludGVnZXIoMTMpKTsKCiAgICAgICAgU3lzdGVtLm91dC5wcmludGxuKG8xLmNhbGMoKSk7CiAgICAgICAgU3lzdGVtLm91dC5wcmludGxuKG8yLmNhbGMoKSk7CiAgICAgICAgU3lzdGVtLm91dC5wcmludGxuKG8zLmNhbGMoKSk7CiAgICAgICAgU3lzdGVtLm91dC5wcmludGxuKG80LmNhbGMoKSk7CiAgICAgICAgU3lzdGVtLm91dC5wcmludGxuKG81LmNhbGMoKSk7CgogICAgICAgIENsYXNzQS5wdWJsaWNTdGF0aWMgPSAiRm9vIjsKICAgICAgICBDbGFzc0Euc2V0UHJpdmF0ZVN0YXRpYygiQmFyIik7CgogICAgICAgIFN5c3RlbS5vdXQucHJpbnRsbihDbGFzc0EucHVibGljU3RhdGljKTsKICAgICAgICBTeXN0ZW0ub3V0LnByaW50bG4oQ2xhc3NBLmdldFByaXZhdGVTdGF0aWMoKSk7CiAgICAgICAgU3lzdGVtLm91dC5wcmludGxuKENsYXNzQi5wdWJsaWNTdGF0aWMpOwogICAgICAgIFN5c3RlbS5vdXQucHJpbnRsbihDbGFzc0IuZ2V0UHJpdmF0ZVN0YXRpYygpKTsKICAgICAgICBTeXN0ZW0ub3V0LnByaW50bG4obzUucHVibGljU3RhdGljKTsKICAgICAgICBTeXN0ZW0ub3V0LnByaW50bG4obzUuZ2V0UHJpdmF0ZVN0YXRpYygpKTsKICAgIH0KfQ==