4.7 Внутренний класс

4.7 Внутренний класс

Возможно, также определять класс в пределах другого класса; такие классы известны как вложенные Классы. Возможности вложенного класса ограничены возможностями его класса приложения. Таким образом, если класс В определен в пределах класса А, то В известен А, но не вне А. Вложенный класс имеет доступ к членам, включая членов с модификатором private, из класса, в который он вложен. Однако главный класс не имеет доступа к членам вложенного класса.

4.7.1 Определение внутреннего класса

Самый важный тип вложенного класса - внутренний класс. Внутренний класс -нестатический вложенный класс. Класс, определенный в классе называют внутренним классом. Класс вне внутреннего класса называют внешним классом. Внутренний класс имеет доступ ко всем переменным и методам своего внешнего класса и может обратиться к ним непосредственно тем же самым способом, которым делают это другие нестатические члены внешнего класса. Таким образом, внутренний класс лежит полностью в пределах своего внешнего класса.

Следующая программа демонстрирует, как создаётся и используется внутренний класс.

Пример 13:
class OuterClass
String str;
boolean outerClassAccessible;
public OuterClass()
          {
str = new String( OuterClass variable );
outerClassAccessible = true;
System.out.println(str);
System.out.println( outerClassAccessible : +outerClassAccessible);
System.out.println( innerClassAccessible : +innerClassAccessible);
          }
class InnerClass
          {
String str;
boolean innerClassAccessible;
public InnerClass(){
str = new String( InnerClass variable );
innerClassAccessible = true;
System.out.println(str);
System.out.println("innerClassAccessible + mnerClassAccessible) ;
          }
}
}
class InnerClassDemo
{
public static void main(String args[])
          {
OuterClass out = new OuterClass();
          }
}

Вышеупомянутая программа не будет компилироваться, потому что внутренний класс не доступен из внешнего класса. Вот результат компиляции


Рисунок 4.8: Вывод

Чтобы обращаться к внутреннему классу из внешнего класса, мы должны создать объект внутреннего класса во внешнем классе.

Измененная программа, чтобы обратиться к переменным innerclass (Внутренний класс), следующая:

Пример 14:
class OuterClass
{
String str;
boolean outerClassAccessible;
InnerClass in;
public OuterClass ()
          {
str = new String( OuterClass variable );
outerClassAccessible = true;
OuterClass.InnerClass in = new OuterClass.InnerClass();
System.out.println(str);
System.out.println( outerClassAccessible : +outerClassAccessible);
System.out.println( innerClassAccessible : +in.innerClassAccessible);
          }
class InnerClass
          {
String str;
boolean innerClassAccessible;
public InnerClass(){
str = new String( InnerClass variable );
innerClassAccessible = true;
System.out.println(str);
System.out.println( innerClassAccessible : +innerClassAccessible);
          }
    }
}

class InnerClassDemo
{
public static void main(String args [])
          {
OuterClass out = new OuterClass();
          }
}

Вывод вышеупомянутой программы:

Рисунок 4.9: Вывод


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

Обратите внимание: Процедура для объявления внутреннего класса отлична от объявления нормального класса. Чтобы объявить внутренний класс, мы должны использовать внешнее название класса, сопровождаемое точкой (.) и далее внутренним названием класса.

4.7.2 Зачем нужно использовать внутренний класс?

Преимущество наличия внутреннего класса состоит в том, что мы можем обратиться к внешним переменным класса и методам из внутреннего класса, не создавая объект внешнего класса. Следовательно, даже, отделяя класс в форме внутреннего класса, внешний класс доступен из внутреннего класса. Внутренние переменные класса или методы, имеющие то же самое имя, что и внешний класс, получают старшинство по внешним переменным класса и методам.

назад к оглавлению вперед

Rus. Open Source company, г. Саратов
ул. Орджоникидзе, 156, офис 203
тел: 8 (8452) 57-84-41
e-mail: info@rus_opensource.com

Главная | Обзоры | О разном
Карта сайта

Учебная литература:

Введение в Linux
Основы JAVA
Архивы

© 2013 opensourcerules.net