import java.util.List;
import java.util.LinkedList;
abstract class Base {
private List<String> strings;
public Base() {
this.strings = new LinkedList<String>();
}
protected void remember
(String s
) { this.strings.add(s);
}
public int rememberedCount() {
return this.strings.size();
}
}
class Derived extends Base {
public Derived() {
super();
this.remember("one");
this.remember("two");
// Would fail with error:
// this.strings.add("three");
}
}
class Test {
public static void main
(String[] args
) { Derived d = new Derived();
System.
out.
println(d.
rememberedCount()); // 3 }
}
aW1wb3J0IGphdmEudXRpbC5MaXN0OwppbXBvcnQgamF2YS51dGlsLkxpbmtlZExpc3Q7CgphYnN0cmFjdCBjbGFzcyBCYXNlIHsKICAgIHByaXZhdGUgTGlzdDxTdHJpbmc+IHN0cmluZ3M7CgogICAgcHVibGljIEJhc2UoKSB7CiAgICAgICAgdGhpcy5zdHJpbmdzID0gbmV3IExpbmtlZExpc3Q8U3RyaW5nPigpOwogICAgfQoKICAgIHByb3RlY3RlZCB2b2lkIHJlbWVtYmVyKFN0cmluZyBzKSB7CiAgICAgICAgdGhpcy5zdHJpbmdzLmFkZChzKTsKICAgIH0KCiAgICBwdWJsaWMgaW50IHJlbWVtYmVyZWRDb3VudCgpIHsKICAgICAgICByZXR1cm4gdGhpcy5zdHJpbmdzLnNpemUoKTsKICAgIH0KfQoKY2xhc3MgRGVyaXZlZCBleHRlbmRzIEJhc2UgewogICAgcHVibGljIERlcml2ZWQoKSB7CiAgICAgICAgc3VwZXIoKTsKICAgICAgICB0aGlzLnJlbWVtYmVyKCJvbmUiKTsKICAgICAgICB0aGlzLnJlbWVtYmVyKCJ0d28iKTsKICAgICAgICAvLyBXb3VsZCBmYWlsIHdpdGggZXJyb3I6CiAgICAgICAgLy8gdGhpcy5zdHJpbmdzLmFkZCgidGhyZWUiKTsKICAgIH0KfQoKY2xhc3MgVGVzdCB7CiAgICBwdWJsaWMgc3RhdGljIHZvaWQgbWFpbihTdHJpbmdbXSBhcmdzKSB7CiAgICAgICAgRGVyaXZlZCBkID0gbmV3IERlcml2ZWQoKTsKICAgICAgICBTeXN0ZW0ub3V0LnByaW50bG4oZC5yZW1lbWJlcmVkQ291bnQoKSk7IC8vIDMKICAgIH0KfQ==