A good link: http://www.cnblogs.com/heshuchao/p/5376298.html
**Essence: class A gives the right to use method C to class B
class B executes method C when appropriate
**The reason for using inner classes: security, will not expose all methods of A to B