Главная | Обратная связь | Поможем написать вашу работу!
МегаЛекции

21. Java — Вложенные и внутренние классы




21. Java — Вложенные и внутренние классы

В этой главе мы обсудим внутренние классы Java.

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

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

Синтаксис

Ниже приведен синтаксис для записи вложенного класса. Здесь класс Outer_Demo – это внешний класс, а класс Inner_Demo – вложенный класс.

class Outer_Demo { class Nested_Demo { }}

Вложенные классы в Java делятся на два типа:

· Нестатические вложенные классы – нестатические члены класса.

· Статические вложенные классы – статические члены класса.

Внутренние классы (нестатические вложенные классы)

Внутренние классы — это механизм безопасности в Java. Мы уже знаем, что класс не может быть связан с модификатором доступа private, но если у нас есть класс как член другого класса, то внутренний класс может быть private. И это также используется для доступа к закрытым (private) членам класса.

В Java внутренние классы имеют три типа в зависимости от того, как и где Вы их определяете:

· внутренний класс;

· локальный метод внутреннего класса;

· анонимный внутренний класс.

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

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

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

Пример

class Outer_Demo { int num;    // Внутренний класс private class Inner_Demo { public void print() {    System. out. println(" Это внутренний класс" ); } }    // Доступ к внутреннему классу из метода void display_Inner() { Inner_Demo inner = new Inner_Demo(); inner. print(); }} public class My_class { public static void main(String args[]) { // Создание внешнего класса Outer_Demo outer = new Outer_Demo();       // Доступ к методу display_Inner() outer. display_Inner(); }}

Здесь Вы можете заметить, что Outer_Demo – внешний класс, Inner_Demo – внутренний класс, display_Inner() – метод, внутри которого мы создаем внутренний класс, и этот метод вызывается из основного метода.

Если Вы скомпилируете и выполните вышеуказанную программу, Вы получите следующий результат:

Это внутренний класс

Доступ к частным (private) членам

Как упоминалось ранее, внутренние классы также используются в Java для доступа к закрытым членам класса. Предположим, у класса есть private члены. Для доступа к ним напишите в нем внутренний класс, верните частные члены из метода внутри внутреннего класса, скажем, методом getValue() и, наконец, из другого класса (из которого Вы хотите получить доступ к закрытым членам) вызовите метод getValue() внутреннего класса.

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

Outer_Demo outer = new Outer_Demo(); Outer_Demo. Inner_Demo inner = outer. new Inner_Demo();

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

Пример

class Outer_Demo { // Частная переменная внешнего класса private int num = 2018;       // Внутренний класс public class Inner_Demo { public int getNum() {    System. out. println(" Это метод getnum внутреннего класса" );     return num; } }} public class My_class2 { public static void main(String args[]) { // Создание внешнего класса Outer_Demo outer = new Outer_Demo();       // Создание внутреннего класса Outer_Demo. Inner_Demo inner = outer. new Inner_Demo(); System. out. println(inner. getNum()); }}

Если Вы скомпилируете и выполняете вышеуказанную программу, то получите следующий результат:

Это метод getnum внутреннего класса2018

Локальный метод внутреннего класса

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

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

Поделиться:





Воспользуйтесь поиском по сайту:



©2015 - 2024 megalektsii.ru Все авторские права принадлежат авторам лекционных материалов. Обратная связь с нами...