Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
kolokvium_1.doc
Скачиваний:
0
Добавлен:
01.07.2025
Размер:
119.81 Кб
Скачать

45. Внутрішні класи

  • Нестатические вложенные классы называют внутренними.

  • Члены внутреннего класса всегда связаны с экземпляром внешнего класса.

  • Объект внутреннего класса всегда ассоциируется с соответствующим объектом внешнего класса.

  • Взаимоотношения между объектами внутреннего и внешнего классов устанавливаются при создании объекта внутреннего класса.

  • Обычно объекты внутреннего класса создаются внутри методов внешнего

  • Внутренние классы не могут содержать статических полей кроме static final.

46. Доступ до полів внутрішніх та зовнішніх класів

  • одноименное поле или метод объявлены во внутреннем классе;

    • простое имя в контексте внутреннего класса – обращение к полю класса;

    • обращение к скрытому полю внешнего класса только через <внешний_тип>.this.<поле>

  • поле или метод унаследованы внутренним классом.

    • желательно указание уточняющей ссылки this;

    • обращение к скрытому полю суперкласса super;

    • обращение к скрытому полю внешнего класса только через <внешний_тип>.this.<поле>

47. Спадкування внутрішніх класів

Когда класс затеняет или замещает члены родительского класса, для ссылки на скрытый член можно применить ключевое слово super. Так же, данное ключевое слово можно задействовать и для работы во внутренних классах. Для этого используется имя текущего класса, затем точка, ключевое слово super, опять точка и имя затененного поля или метода. Хотя имя текущего класса можно и опускать

48. Спадкування і приховування у контексті зовнішнього класу

Проблемы, возникающие из-за отсутствия множественного наследования, частично можно решить с использованием вложенных классов. Если требуется, чтобы класс ClassA наследовал все доступные методы, включая и protected-методы, двух классов (класса ClassB и класса ClassC), то реализовать такую схему можно через вложенный класс. Класс ClassA создается производным от класса ClassB. Это позволит всем экземплярам класса ClassA вызывать protected-методы класса ClassB. В классе ClassA объявляется подкласс ClassFromC, производный от класса ClassC и переопределяющий все protected-методы класса ClassC, реализуя их как вызовы соответствующих методов из суперкласса. При такой реализации экземпляр класса ClassA получает доступ к protected-методам двух различных классов - своего суперкласса и своего вложенного класса.

49. Локальні внутрішні класи

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

Локальные внутренние классы:

  • могут наследоваться от других классов, реализовать интерфейсы, они могут быть базовыми для новых классов;

  • недоступны за пределами внешнего класса;

  • экземпляры – обычные объекты можно передавать в методы и возвращать из них

  • единственный модификатор – final;

  • доступ из кода класса ко всем параметрам метода, локальным переменным, к статическим переменным, но все должны иметь модификатор – final.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]