1 added
1 removed
Original
2026-01-01
Modified
2026-02-26
1
<p>Вложенным классом называют класс, который является членом другого класса (находится в его теле). Существует четыре базовых типа вложенных классов в Java:</p>
1
<p>Вложенным классом называют класс, который является членом другого класса (находится в его теле). Существует четыре базовых типа вложенных классов в Java:</p>
2
<ul><li>Static Nested classes(статические вложенные классы)</li>
2
<ul><li>Static Nested classes(статические вложенные классы)</li>
3
<li>Nested Inner classes (вложенные внутренние классы)</li>
3
<li>Nested Inner classes (вложенные внутренние классы)</li>
4
<li>Method Local Inner classes (внутренние классы в локальном методе)</li>
4
<li>Method Local Inner classes (внутренние классы в локальном методе)</li>
5
<li>Anonymous Inner classes (анонимные классы)</li>
5
<li>Anonymous Inner classes (анонимные классы)</li>
6
</ul><h2>Для чего они нужны?</h2>
6
</ul><h2>Для чего они нужны?</h2>
7
-
<p>Вложенными классами описывают типы, которые будут использоваться только в одном классе или вообще будут использованы только один раз (анонимные классы). С помощью этих классов реализовывается необходимость разделить данные и методы их обработки в разные типы (сущности). Сохранив, при этом, инкапсуляцию.</p>
7
+
<p>Вложенными классами описывают типы, которые будут использоваться только в одном классе или вообще будут использованы только один раз (анонимные классы). С помощью этих классов реализовывается необходимость разделить данные и методы их обработки в разные типы (сущности). Сохранив, при эт��м, инкапсуляцию.</p>
8
<p>В данном уроке будут рассмотрены только Static Nested classes (статические вложенные классы).</p>
8
<p>В данном уроке будут рассмотрены только Static Nested classes (статические вложенные классы).</p>
9
<p>Static Nested classes используются для описания типа, который не должен зависеть от конкретного экземпляра внешнего класса, в который он вложен. Например, билдер - собирает очередной экземпляр внешнего класса и никак с ним больше не взаимодействует.</p>
9
<p>Static Nested classes используются для описания типа, который не должен зависеть от конкретного экземпляра внешнего класса, в который он вложен. Например, билдер - собирает очередной экземпляр внешнего класса и никак с ним больше не взаимодействует.</p>
10
<h2>Как его обозначить в коде?</h2>
10
<h2>Как его обозначить в коде?</h2>
11
<p>Static Nested class объявляется как и любой класс, НО внутри тела класса с ключевым словом<strong>static</strong>. Имена вложенных классов не имеют особых правил.</p>
11
<p>Static Nested class объявляется как и любой класс, НО внутри тела класса с ключевым словом<strong>static</strong>. Имена вложенных классов не имеют особых правил.</p>
12
<p>Static Nested class не имеет привязки к объекту внешнего класса (не хранит в себе ссылку на конкретный экземпляр внешнего класса).</p>
12
<p>Static Nested class не имеет привязки к объекту внешнего класса (не хранит в себе ссылку на конкретный экземпляр внешнего класса).</p>
13
<p>Вложенный класс (Static Nested) имеет доступ к статическим членам своего внешнего класса, в том числе и<em>к закрытым (private)</em>, даже без упоминания имени класса.</p>
13
<p>Вложенный класс (Static Nested) имеет доступ к статическим членам своего внешнего класса, в том числе и<em>к закрытым (private)</em>, даже без упоминания имени класса.</p>
14
<p>К НЕстатическим членам внешнего класса Nested(static) класс не имеет прямого доступа. Но такой доступ возможен через объект (экземпляр) внешнего класса, в том числе к закрытым (private) членам внешнего класса.</p>
14
<p>К НЕстатическим членам внешнего класса Nested(static) класс не имеет прямого доступа. Но такой доступ возможен через объект (экземпляр) внешнего класса, в том числе к закрытым (private) членам внешнего класса.</p>
15
<p>Вот код-пример:</p>
15
<p>Вот код-пример:</p>
16
<p>В свою очередь Nested(static) класс - не совсем прозрачен для внешнего класса. Внешний класс не видит члены Nested(static) класса, без упоминания его имени или объекта. В коде внешнего класса нельзя прямо обратиться к члену вложенного класса.</p>
16
<p>В свою очередь Nested(static) класс - не совсем прозрачен для внешнего класса. Внешний класс не видит члены Nested(static) класса, без упоминания его имени или объекта. В коде внешнего класса нельзя прямо обратиться к члену вложенного класса.</p>
17
<p>Соответственно, для обращения к статическим членам вложенного статического класса нужно использовать его имя, а для обращения к НЕстатическим членам вложенного статического класса - нужно использовать имя его экземпляра. При этом, модификаторы доступа не влияют на видимость членов Nested(static) класса, для внешнего класса (private, default (package visible), protected, public).</p>
17
<p>Соответственно, для обращения к статическим членам вложенного статического класса нужно использовать его имя, а для обращения к НЕстатическим членам вложенного статического класса - нужно использовать имя его экземпляра. При этом, модификаторы доступа не влияют на видимость членов Nested(static) класса, для внешнего класса (private, default (package visible), protected, public).</p>
18
<p>Код-пример:</p>
18
<p>Код-пример:</p>
19
<p>Доступ к вложенному классу и его членам, из других классов, ограничивается модификаторами доступа и уровня.</p>
19
<p>Доступ к вложенному классу и его членам, из других классов, ограничивается модификаторами доступа и уровня.</p>