Вложенный класс

Вложенный класс

Внутренний, или вложенный класс (англ. inner class) — в объектно-ориентированном программировании класс, целиком определённый внутри другого класса.

Вложенные классы поддерживаются в языке программирования С# и других языках на платформе .NET, а также в языке программирования D и в C++.

Содержание

Обзор

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

Типы внутренних классов

В

Статические внутренние классы

Декларируются внутри основного класса и обозначаются ключевым словом static. Не имеют доступа к членам внешнего класса за исключением статических. Пример:

class OuterClass() 
{
   public OuterClass() {}
   private int outerField;
   static int staticOuterField;
   static class InnerClass
   {
      int getOuterField()
      {
         return OuterClass.this.outerField; // Эта линия кода образует ошибку при компиляции
      }
      int getStaticOuterField()
      {
         return OuterClass.staticOuterField; // Эта линия кода синтаксически корректна
      }
   }
}

Внутренние классы

Декларируются внутри основного класса. В отличиии от статических внутренних классов, имеют доступ к членам внешнего класса. Пример:

class OuterClass()
{
   public OuterClass() {}
   private int outerField;
   class InnerClass
   {
      int getOuterField()
      {
         return OuterClass.this.outerField; // Эта линия кода синтаксически корректна
      }
   }
}

Локальные классы

Декларируются внутри методов основного класса. Могут быть использованы только внутри этих методов. Имеют доступ к членам внешнего класса. Имеют доступ как к локальным переменным, так и к параметрам метода при одном условии - переменные и параметры используемые локальным классом должны быть задекларированы final. Пример:

class OuterClass()
{
   public OuterClass() {}
   private int outerField;
   private InnerClass inner; // Эта линия кода образует ошибку при компиляции
   void methodWithLocalClass (final int parameter)
   {
      InnerClass innerInsideMehod; // Эта линия кода синтаксически корректна
      int notFinal = 0;
      class InnerClass
      {
         int getOuterField()
         {
            return OuterClass.this.outerField; // Эта линия кода синтаксически корректна
         }
         notFinal++; // Эта линия кода образует ошибку при компиляции
         int getParameter()
         {
            return parameter; // Эта линия кода синтаксически корректна
         }
      }
   }
}

Анонимные (безымянные) классы

Декларируются внутри методов основного класса. Могут быть использованы только внутри этих методов. В отличии от локальных классов, анонимные классы не имеют названия. Главное требование к анонимному классу - он должен наследовать существующий класс или реализовывать существующий интерфейс. Пример:

class OuterClass()
{
   public OuterClass() {}
   void methodWithLocalClass (final int interval)
   {
      // При определении анонимного класса применен полиморфизм - переменная listener 
      // содержит экземпляр анонимного класса, реализующего существующий 
      // интерфейс ActionListener
      ActionListener listener = new ActionListener()
      {
         public void actionPerformed(ActionEvent event)
         {
            System.out.println("Эта строка выводится на экран каждые " + interval + " секунд");
         }  
      };
 
      Timer t = new Timer(interval, listener); // Обьект анонимного класса использован внутри метода
      t.start();
   }
}

См. также

Литература

Cay S. Horstmann and Gary Cornell, Core Java, eighth edition (Volume I). Prentice Hall, 2003. ISBN 978-0132354769 (ссылка на страницу книги)

Ссылки


Wikimedia Foundation. 2010.

Игры ⚽ Поможем написать реферат

Полезное


Смотреть что такое "Вложенный класс" в других словарях:

  • Внутренний класс — Внутренний, или вложенный класс (англ. inner class) в объектно ориентированном программировании класс, целиком определённый внутри другого класса. Вложенные классы поддерживаются в языке программирования Java, начиная с версии 1.1, С# и… …   Википедия

  • Хрупкий базовый класс — Хрупкий базовый класс  фундаментальная проблема объектно ориентированного программирования. Описание Проблема хрупкого базового класса заключается в том, что малейшие правки в деталях реализации базового класса могут привнести ошибку в… …   Википедия

  • C++ — У этого термина существуют и другие значения, см. C. См. также: Си (язык программирования) C++ Семантика: мультипарадигмальный: объектно ориентированное, обобщённое, процедурное, метапрограммирование Тип исполнения: компилируемый Появился в …   Википедия

  • С++ — См. также: Си (язык программирования) C++ Семантика: мультипарадигмальный: объектно ориентированное, обобщённое, процедурное, метапрограммирование Тип исполнения: компилируемый Появился в: 1985 г. Автор(ы): Бьёрн Страуструп …   Википедия

  • Капитал — (Capital) Капитал это совокупность материальных, интеллектуальных и финансовых средств, используемых для получения дополнительных благ Определение понятия капитала, виды капитала, рынок капитала, кругооборот капитала, проблема оттока… …   Энциклопедия инвестора

  • Физиократы — (франц. physiocrates, от греч. phýsis – природа и krátos – сила, власть, господство)         представители одного из направлений классической буржуазной политической экономии (См. Классическая буржуазная политическая экономия), возникшего во… …   Большая советская энциклопедия

  • Чернышевский, Николай Гаврилович — — сын Гавриила Ивановича Ч., публицист и критик; род. 12 го июля 1828 г. в Саратове. Одаренный от природы отличными способностями, единственный сын своих родителей, Н. Г. был предметом усиленных забот и попечений всей семьи. Хотя и… …   Большая биографическая энциклопедия

  • Инвестиции — (Investment) Инвестиции это капитальные вложения для получения прибыли Виды инвестиций, инвестиционные проекты, инвестиции в фондовый рынок, инвестиции в России, инвестиции в мире, во что инвестировать? Содержание >>>>>>>>>> …   Энциклопедия инвестора

  • Япония — I КАРТА ЯПОНСКОЙ ИМПЕРИИ. Содержание: I. Физический очерк. 1. Состав, пространство, береговая линия. 2. Орография. 3. Гидрография. 4. Климат. 5. Растительность. 6. Фауна. II. Население. 1. Статистика. 2. Антропология. III. Экономический очерк. 1 …   Энциклопедический словарь Ф.А. Брокгауза и И.А. Ефрона

  • Капитализм — У этого термина существуют и другие значения, см. Капитализм (значения). Содержание 1 Другие определения 2 История термина …   Википедия


Поделиться ссылкой на выделенное

Прямая ссылка:
Нажмите правой клавишей мыши и выберите «Копировать ссылку»