Иллюстрированный самоучитель по Java


         

операция new. Но конструктор только


    Nested.A theA = nest.new A(); // Полное имя класса и уточненная 

                                  // операция new. Но конструктор только вложенного класса

    Nested.A.AB theAB = theA.new AB(); // Те же правила. Операция

                                       // new уточняется только одним именем

    Nested.В theB = nest.new B(); // Еще одна матрешка 

    Nested.В.ВС theBC = theB.new BC();

    theB.f(999);  // Методы вызываются обычным образом 

    nest.m(); 

  } 

}

Ну как? Поняли что-нибудь? Если вы все поняли и готовы применять эти конструкции в своих программах, значит вы — выдающийся талант и можете перейти к следующему пункту. Если вы ничего не поняли, значит вы — нормальный человек. Помните принцип KISS и используйте вложенные классы как можно реже.

Для остальных дадим пояснения.

Как видите, доступ к полям внешнего класса

Nested

возможен отовсюду, даже к закрытому полю

pr

. Именно для этого в Java и введены вложенные классы. Остальные конструкции введены вынужденно, для того чтобы увязать концы с концами.

Язык Java позволяет использовать одни и те же имена в разных областях видимости — пришлось уточнять константу

this

именем класса:

Nested.this, В.this

.

В безымянном классе не может быть конструктора, ведь имя конструктора должно совпадать с именем класса, — пришлось использовать имя суперкласса, в примере это класс

object

. Вместо конструктора в безымянном классе используется блок инициализации экземпляра.

Нельзя создать экземпляр вложенного класса, не создав предварительно экземпляр внешнего класса, — пришлось подстраховать это правило уточнением операции


Содержание  Назад  Вперед





Forekc.ru
Рефераты, дипломы, курсовые, выпускные и квалификационные работы, диссертации, учебники, учебные пособия, лекции, методические пособия и рекомендации, программы и курсы обучения, публикации из профильных изданий