Объявление класса: a1 - Экземпляр класса A:
В одном пакете должен быть только один public класс, остальные должны быть default.
В одном классе может быть несколько public классов. При этом нужно помнить, что уровень доступа должен быть не шире родительского класса.
Для каждого класса компилятор (javac) создает отдельный файл класса Outer$Inner.class.
Виды классов:
public-класс верхнего уровня
1 Публичный класс только один в одном java-файле
2 Имя этого класса должно совпадать с именем java-файла, в котором он находится
Уровни доступа
public, default
не обязательно указывать
Атрибуты
abstract, final, strictfp
не обязательно указывать
Другие классы верхнего уровня
Уровни доступа
public, default
не обязательно указывать
Атрибуты
static, abstract, final, strictfp
не обязательно указывать
Классы-элементы классов (вложенные, внутренние)
Создание объектa внутреннего класса b: Доступ к объекту внешнего класса x из внутреннего:Объявлённые внутри классов
Уровни доступа
public, protected, default, private
не обязательно указывать
Атрибуты
static, abstract, final, strictfp
не обязательно указывать
Свойства внутренних классов:
Не могут объявлять статических полей (кроме констант), методов и классов (но могут наследовать их.
Имеют доступ к элементам внешнего класса.
Имеют доступ к локальным переменным и параметрам метода (они должны быть объявлены как final).
Класс объявленный со спецификатором abstract. Определяют частичную функциональность класса, оставив часть методов не реализованными.
При наследовании абстрактного класса, класс потомок наполняет функциональностью нереализованные методы.
Класс объявленный со спецификатором abstract может содержать:
как абстрактные методы (методы без реализации), так и не абстрактные
конструкторы
final-переменные
локальная переменная - константа
! Нельзя создать экземпляр, но можно объявить переменную данного типа.