Java: Статичный по сравнению с внутренним классом [дубликат]

Они не могут быть удалены из шестеренки питания.

354
задан Hearen 3 March 2019 в 20:07
поделиться

3 ответа

Внутренний класс, по определению , не может быть статическим, поэтому я собираюсь переделать ваш вопрос как «Что В чем разница между статическими и нестатическими вложенными классами? "

Нестатический вложенный класс имеет полный доступ к членам класса, внутри которого он вложен. Статический вложенный класс не имеет ссылки на экземпляр вложенности, поэтому статический вложенный класс не может вызывать нестатические методы или получать доступ к нестатическим полям экземпляра класса, в котором он вложен.

548
ответ дан 23 November 2019 в 00:22
поделиться

Обсуждение вложенных классов ...

Разница в том, что объявление вложенного класса, которое также является статическим, может быть создано за пределами включающего класса.

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

Но если он static , то ссылка не существуют, внешние поля недоступны (кроме как через обычную ссылку, как любой другой объект), и поэтому вы можете создать экземпляр вложенного класса отдельно.

10
ответ дан 23 November 2019 в 00:22
поделиться

Давайте посмотрим на источник мудрости для таких вопросов: Эффективная Java Джошуа Блоха :

Технически не существует такой вещи, как статический внутренний класс. Согласно Эффективная Java , правильная терминология - это статический вложенный класс . Нестатический вложенный класс действительно является внутренним классом, наряду с анонимными классами и локальными классами.

А теперь процитируем:

Каждый экземпляр нестатического вложенного класса неявно связан с включающим экземпляром содержащего его класса ... Возможно для вызова методов включающего экземпляра.

Статический вложенный класс не имеет доступа к включающему экземпляру. Он также занимает меньше места.

125
ответ дан 23 November 2019 в 00:22
поделиться
Другие вопросы по тегам:

Похожие вопросы: