Студопедия

Главная страница Случайная страница

КАТЕГОРИИ:

АвтомобилиАстрономияБиологияГеографияДом и садДругие языкиДругоеИнформатикаИсторияКультураЛитератураЛогикаМатематикаМедицинаМеталлургияМеханикаОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРелигияРиторикаСоциологияСпортСтроительствоТехнологияТуризмФизикаФилософияФинансыХимияЧерчениеЭкологияЭкономикаЭлектроника






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






 

Внутренний класс — это класс, объявленный внутри другого класса. Эту ситуа­цию не следует путать с использованием в качестве поля класса объекта другого класса. Здесь речь идет о том, что в рамках кода тела класса содержится описа­ние другого класса, который и называется внутренним. Класс, в котором объ­явлен внутренний класс, называется внешним. В принципе, внутренний класс может быть статическим, но такие классы используются на практике крайне редко, поэтому рассматривать мы их не будем, а ограничимся только нестатиче­скими внутренними классами.

Внутренний класс имеет несколько особенностей. Во-первых, члены внутрен­него класса доступны только в пределах внутреннего класса и недоступны во внешнем классе (даже если они открытые). Во-вторых, во внутреннем классе можно обращаться к членам внешнего класса напрямую. Наконец, объявлять внутренние классы можно в любом блоке внешнего класса. Пример использова­ния внутреннего класса приведен в листинге 4.6.

Листинг 4.6. Использование внутреннего класса

class MyOuter{

// Поле внешнего класса:

int number=123;

// Метод внешнего класса:

void show(){

// Создание объекта внутреннего класса:

MyInner InnerObj=new MyInner();

// Вызов метода объекта внутреннего класса:

InnerObj.display(); }

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

class MyInner{

// Метод внутреннего класса: void display(){

System.out.println(" Поле number=" +number); }

}

}

class InnerDemo{

public static void main(String args[]){

// Создание объекта внешнего класса:

MyOuter OuterObj=new MyOuter();

// Вызов метода объекта внешнего класса:

OuterObj.show(); }

}

В программе описаны три класса: внешний класс MyOuter, описанный в нем вну­тренний класс MyInner, а также класс InnerDemo. В классе InnerDemo описан метод main(), в котором создается объект внешнего класса MyOuter и вызывается метод этого класса show().

Структура программы следующая: во внешнем классе MyOuter объявляется поле number, метод show() и описывается внутренний класс MyInner. У внутреннего класса есть метод display(), который вызывается из метода внешнего класса show(). Для вызова метода display() в методе show() создается объект внутрен­него класса InnerObj. Причина в том, что вызывать метод display() напрямую нельзя — члены внутреннего класса во внешнем классе недоступны.

В методе display() выводится сообщение со значением поля внешнего класса number. Поскольку во внутреннем классе допускается непосредственное обраще­ние к членам внешнего класса, обращение к полю number выполняется простым указанием его имени.

В результате выполнения программы получаем сообщение: Поле number=123

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


Поделиться с друзьями:

mylektsii.su - Мои Лекции - 2015-2024 год. (0.005 сек.)Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав Пожаловаться на материал