public class ObClo2 { private abstract class AbAdder { abstract int addSome(int some); } public void useAdder(AbAdder aa) { System.out.println(aa.addSome(7)); } private class RegAdder { int addSome(int some) { return some; } } public void useAdder(RegAdder aa) { System.out.println(aa.addSome(7)); } interface IAdder { int addSome(int some); } public void useAdder(IAdder aa) { System.out.println(aa.addSome(7)); } public void doIt() { AbAdder adder6 = new AbAdder(){ int addSome(int some) { return some + 7; } }; useAdder(adder6); RegAdder adder9 = new RegAdder() { int addSome(int some) { return some + 9; } }; useAdder(adder9); IAdder adder11 = new IAdder(){ public int addSome(int some) { return some + 11; } }; useAdder(adder11); } public static void main(String[] args) { (new ObClo2()).doIt(); } }