- •8.Исключения: понятие исключения; классы исключений; необходимость обработки исключений.
- •9.Исключения: операторы языка Java, используемые для обработки исключений.
- •10.Исключения: организация обработки исключений; определение собственных исключений.
- •11.Ввод/вывод в Java: основные понятия.
- •12.Ввод/вывод в Java: основные группы классов и интерфейсов пакета java.Io.
- •13.Классификация программ по типу исполнения (компилируемые, интерпретируемые, исполняемые на виртуальных машинах). Виртуальная машина Java. Jit-компиляция.
- •14.Хранение данных в памяти эвм.
- •15.Приведение типов (явное и автоматическое). Константы и переменные.
- •16. Оператор присваивания. Порядок действий (приоритет операторов).
- •17. Арифметические операторы. Операторы инкремента и декремента.
- •18. Операторы сравнения и логические операторы.
- •19. Операторы ветвления. Условный оператор. Минимизация количества проверок.
- •Условный оператор if
- •Условный оператор if-else
- •20. Операторы ветвления. Оператор множественного выбора. Его сравнение с условным оператором.
- •21. Встроенный класс String. Строковые операции.
- •22. Стандартные потоки ввода-вывода. Организация ввода и вывода данных. Класс Scanner.
- •23. Операторы организации циклов. Цикл типа «n раз».
- •24. Операторы организации циклов. Цикл типа «пока» (с пред- и постпроверкой условия).
- •25. Массивы. Способы объявления и инициализации массивов. Индексация и размер массива.
- •26. Массивы. Алгоритмы сортировки.
- •27. Массивы. Многомерные массивы.
- •28. Статические методы классов. Методы функционального и процедурного типа.
- •29. Сигнатура метода. Перегрузка методов.
- •30. Процедурное программирование. Объектно ориентированное программирование. Сравнение парадигм.
- •31.Иерархия классов Java. Коренной класс Object и его методы.
- •32. Исключительные ситуации. Обработка исключительных ситуаций.
- •33. Приложения с графическим интерфейсом с использованием gui-пакетов и апплеты.
- •Локальные классы (local classes)
- •Объявление локальных классов
- •Доступ к переменным в локальных классах
- •Анонимные классы (Anonymous Classes)
- •Объявление анонимных классов
- •Синтаксис анонимных классов
- •Interface имя {
- •39.Типы-перечисления. Поля и методы типов-перечислений. Аннотации. Объявление типа аннотации и его использование. Аннотации для компилятора.
- •Синтаксис
- •Документация
- •Аннотации, используемые компилятором
- •Классы-коллекции
- •Интерфейсы-коллекции
- •Интерфейс Collection
- •Интерфейс List
- •Интерфейс Set
- •Интерфейс Queue
- •Иерархия классов-коллекций
- •Класс Vector
- •Класс ArrayList
- •Класс Stack
- •Паттерн проектирования Iterator
- •Класс LinkedList
- •Классы-множества
Локальные классы (local classes)
Локальные классы — это классы, объявленные в блоке операторов между фигурными скобками. Например, локальные классы, объявленные в теле метода.
Объявление локальных классов
Вы можете объявить локальный класс внутри любого блока операторов. Например внутри методов, циклов или операторов if.
Доступ к переменным в локальных классах
Локальный класс имеет доступ к членам класса, в котором он объявлен. В предыдущем примере конструктор PhoneNumber обращается к полюLocalClassExample.regularExpression.
Также, локальный класс имеет доступ к локальным переменным. Локальные классы имеют доступ только к переменным, объявленным как final. Когда локальный класс обращается к локальной переменной, происходит «захват» этой переменой. Например, конструктор PhoneNumber имеет доступ к локальной переменной numberLength потому что она объявлена как final; numberLength — захваченная переменная.
Анонимные классы (Anonymous Classes)
Анонимные классы позволяют сделать ваш код более кратким. Анонимные классы позволяют одновременно объявить класс и создать его экземпляр. Анонимные классы, в отличие от локальных, не имеют имени. Используйте анонимные классы, если локальный класс нужен вам единожды.
Объявление анонимных классов
В отличие от объявления обычных классов, объявление анонимных классов происходит внутри выражения.
Синтаксис анонимных классов
Как уже говорилось, объявление анонимных классов происходит внутри выражения. Синтаксис анонимных классов похож на вызов конструктора класса, за исключением того, что происходит определение класса.
Определение анонимного класса содержит:
Оператор new
Имя интерфейса для реализации или класса для наследования. В этом примере класс реализует интерфейс HelloWorld.
Скобки, также как и при создании обычных объектов. В данном случае мы реализуем интерфейс, поэтому скобки пустые.
Тело класса.
Анонимный класс — часть выражения, в данном примере анонимный класс является частью выражения инициализации объекта frenchGreeting, поэтому после закрывающейся фигурной скобки стоит точка с запятой.
Доступ к локальным переменным. Определение и доступ к полям анонимных классов
Также как и локальные классы, анонимные могут захватывать переменные, доступ к локальным переменным происходит по тем же правилам:
Анонимный класс имеет доступ к полям внешнего класса.
Анонимный класс не имеет доступ локальным переменным области, в которой он определен, если они не финальные (final) или неизменяемые (effectively final).
Как и у других внутренних классов, объявление переменной с именем, которое уже занято, затеняет предыдущее объявление.
Анонимные классы имеют те же ограничения, что и локальные:
Вы не можете определять статические члены анонимного класса.
Анонимный класс может содержать статические поля, если это константы.
Анонимные классы также могут содержать в себе локальные классы. Конструктора в анонимном классе быть не может.
38.Интерфейсы языка Java. Типизация и интерфейсы. Члены интерфейсов языка Java. Наследование интерфейсов. Реализация интерфейсов классами. Назначение и использование интерфейсов при программировании на языке Java.
Интерфейсы
Интерфейсы Java созданы для поддержки динамического выбора (resolution) методов во время выполнения программы. Интерфейсы похожи на классы, но в отличие от последних у интерфейсов нет переменных представителей, а в объявлениях методов отсутствует реализация. Класс может иметь любое количество интерфейсов. Все, что нужно сделать — это реализовать в классе полный набор методов всех интерфейсов. Сигнатуры таких методов класса должны точно совпадать с сигнатурами методов реализуемого в этом классе интерфейса. Интерфейсы обладают своей собственной иерархией, не пересекающейся с классовой иерархией наследования. Это дает возможность реализовать один и тот же интерфейс в различных классах, никак не связанных по линии иерархии классового наследования. Именно в этом и проявляется главная сила интерфейсов. Интерфейсы являются аналогом механизма множественного наследования в C++, но использовать их намного легче.
Оператор interface
Определение интерфейса сходно с определением класса, отличие состоит в том, что в интерфейсе отсутствуют объявления данных и конструкторов. Общая форма интерфейса приведена ниже: