Какие существуют особенности использования вложенных классов: статических и внутренних? В чем заключается разница между ними?



• Вложенные классы могут обращаться ко всем членам обрамляющего класса, в том числе и приватным.

• Для создания объекта статического вложенного класса объект внешнего класса не требуется.

• Из объекта статического вложенного класса нельзя обращаться к не статическим членам обрамляющего класса напрямую, а только через ссылку на экземпляр внешнего класса.

• Обычные вложенные классы не могут содержать статических методов, блоков инициализации и классов. Статические вложенные классы - могут.

• В объекте обычного вложенного класса хранится ссылка на объект внешнего класса. Внутри статической такой ссылки нет. Доступ к экземпляру обрамляющего класса осуществляется через указание .this после его имени. Например: Outer.this.