public class OuterClass { int outerClassField; InnerClass ic; public OuterClass(int field) { outerClassField = field; ic = new InnerClass(field*2); } class InnerClass { int innerClassField; public InnerClass(int field) { innerClassField = field; } public String toString() { return "[innerClassField: "+innerClassField+"]"; } } public String toString() { return "outerClassField: "+outerClassField+" "+ic.toString(); } } class TestOuterClass { public static void main(String []args) { OuterClass outer = new OuterClass(10); System.out.println(outer); OuterClass.InnerClass inner = outer.new InnerClass(4); System.out.println(inner.toString()); } }