- •23. Сумісність, перетворення та перевірка типів
- •24. Особливості застосування модифікаторів protected та final
- •25. Модифікатор методів abstract і абстрактні класи
- •26. Клас Object і його методи
- •32. Оголошення інтерфейсу, константи та методи у ньому
- •33. Розширення інтерфейсів, спадкування та приховування констант
- •34. Спадкування, перевизначення і перевантаження методів у інтерфейсах
- •35. Робота з інтерфейсами та їх реалізація
- •36. Пусті інтерфейси та правила застосування інтерфейсів
- •37. Виключення та їх види
- •38. Створення типів виключень
- •39. Інструкція throw, передача управління
- •40. Висловлювання throws і перевизначення методів
- •45. Внутрішні класи
- •46. Доступ до полів внутрішніх та зовнішніх класів
- •47. Спадкування внутрішніх класів
- •48. Спадкування і приховування у контексті зовнішнього класу
- •49. Локальні внутрішні класи
- •50. Анонімні локальні класи
- •51. Вкладеність у інтерфейсах та змінні в них
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.
