Студопедия

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

Разделы сайта

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






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






     

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

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

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






    © 2023 :: MyLektsii.ru :: Мои Лекции
    Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав.
    Копирование текстов разрешено только с указанием индексируемой ссылки на источник.