Структура проекта 10-8

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

Существует возможность определения одного класса внутри другого. Такие классы называются вложенными (nested) классами. Область видимости вложенного класса ограничивается областью видимости включающего класса.

Таким образом, если класс B определен внутри класса А, то B известен внутри А, но не вне его.

Вложенный класс имеет доступ к членам класса (включая private-члены), в который он вложен. Однако, включающий класс не имеет доступа к членам вложенного класса.

Существует два типа вложенных классов: статические и нестатические.

Статический вложенный класс – это класс, который имеет модификатор static. Согласно своей характеристике, он должен обращаться к нестатическим членам своего включающего класса только через объект. Т.е. он не может обратиться к членам включающего класса напрямую. Из-за этого ограничения статические вложенные классы используются редко.

Мы использовали статический вложенный класс Student в проектах 8.1 и 8.2 для реализации структуры данных типа «запись» только потому, что не знали, что класс Student можно реализовать отдельно от класса, который содержит статический метод main().

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

Наиболее важный тип вложенного класса – внутренний (inner) класс.

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

Структура проекта 10-8 - student2.ru

public class Outer{

// Демонстрирует внутренний класс

int outer_x=100;

void test(){

Inner inner=new Inner();

inner.disply();

}

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

class Inner {

void disply(){

System.out.print ("В методе disply: ");

System.out.println ("outer_x = "+outer_x);

}

} // class Inner

} // class Outer

public class InnerClassDemo{

public static void main (String []args){

Outer outer=new Outer();

outer.test();

outer.outer_x=200;

outer.test();

}

}

Структура проекта 10-8 - student2.ru

Структура проекта 10-8 - student2.ru

Взаимодействие объектов, связанных иерархически. Реализация списка объектов на основе массива фиксированной длины. Возврат методом объекта (ссылки на объект) и массива объектов (ссылки на массив объектов)

Если переменная экземпляра имеет объектный тип, получаем дерево с тремя и более уровнями
Структура проекта 10-8 - student2.ru

Структура проекта 10-8 - student2.ru

Структура проекта 10-8

Структура проекта 10-8 - student2.ru

public class Student { // реализует запись о студенте

// поля общедоступные

public int num_z; //номер зачетки - ключевое

public String name; // фамилия

public double ball; // средний балл по последней сессии

public String hobby; //хобби

//методы

// конструктор с параметрами

Наши рекомендации