— Привет, Амиго! Быстро же ты справился с новыми темами и задачами. А у меня для тебя сегодня — много хорошего чтива. Думаю, тебе будет полезно еще раз как следует разобраться с вложенными классами.
Вложенные внутренние классы
Зачем создавать одни классы внутри других? Например, чтобы выделить некую сущность, неразрывно связанную с другой сущностью, чтобы сохранить логику программы. Сложно? Ничего страшного. Рассмотрим все подробно и с примерами в этой статье.
Статические вложенные классы
Чем статические вложенные классы отличаются от других групп? Продолжаем рассматривать тему вложенных классов и разбираться с нюансами — в этой практической лекции.
Внутренние классы в локальном методе
Локальные классы — это подвид внутренних классов, но у них есть ряд особенностей и отличий. Давай посмотрим на него в действии.
Анонимные классы
Как и локальные классы, о которых мы говорили в прошлой лекции, анонимные — подвид внутренних классов. У них также есть несколько сходств и отличий между собой. Давай разберемся в этой подробной лекции, почему они, собственно, называются «анонимными», и посмотрим на практические примеры.
И еще: полезная ссылка. Все о final читаем в 7 главе книги "Философии Java" и в статье на нашем сайте.
ПЕРЕЙДИТЕ В ПОЛНУЮ ВЕРСИЮ
Вложенные классы (статические)
— такой класс не имеет в себе ссылки на внешний класс и создается не на его основе. Создание такого вложенного класса повышает инкапсуляцию и способствует более реалистичной абстракции. Может содержать статические переменные и методыВнутренние классы (не статические)
— такой класс не может существовать без экземпляра внешнего класса и должен быть создан на его основе, который неявно передается в него при создании. Чтобы обратиться к полю или методу внешнего класса внутри внутреннего нужно писать ИмяКласса.this.поле. Не может содержать статические переменные и методыЛокальные классы (не статические)
— такой класс объявляется только в блоке кода. Чаще всего — внутри какого-то метода внешнего класса. Если версия java 7 или ниже, параметры метода должны быть с модификатором final. В 8 версии языка локальный класс имеет доступ не только к final переменным и параметрам, но и к effective-final. Effective-final называют переменную, значение которой не менялось после инициализации. Объект локального класса не может создаваться за пределами метода или блока, в котором его объявили. Локальные классы в статических методах внешнего класса могут ссылаться только на статические члены включающего класса. Не может содержать статические переменные и методыАнонимные классы (не статические)
— такой класс объявляется на основе другого класса или интерфейса посредством указания в { } всех нужных нам методов и полей. Не может содержать статические переменные и методы