Question: what is the main difference between static and non-static nested classes?
Answer: Nested classes that are declared static are called static nested classes. Non-static nested classes are called inner classes. A nested class is a member of its enclosing class. Non-static nested classes (inner classes) have access to other members of the enclosing class, even if they are declared private.