ООП 2 Flashcards
оператор instanceof
Оператор instanceof возвращает true, если объект является экземпляром класса или его потомком.
Зачем нужны и какие бывают блоки инициализации?
Наборы выражений инициализации полей, заключенные в фигурные скобки и размещаемые внутри класса вне объявлений методов или конструкторов.
Бывают статические и нестатические блоки инициализации.
Если блоков инициализации несколько, они выполняются в порядке следования в тексте класса.
Блок инициализации способен генерировать исключения.
Можно ли объявить метод абстрактным и статическим одновременно?
Нет.
Модификатор abstract говорит, что метод будет реализован в другом классе, а static наоборот указывает, что этот метод будет доступен по имени класса.
Абстрактный класс
класс, на основе которого не могут создаваться объекты
Абстрактный метод
Метод, который не имеет реализации. Если в классе есть хотя бы один абстрактный метод, то весь класс должен быть объявлен абстрактным.
ключевое слово static
Метод или поле класса принадлежат не объекту, а классу.
Т.е. доступ можно будет получить и не создавая объекта класса.
Поля помеченные static инициализируются при инициализации класса.
ограничение статических методов
Статические методы:
- могут вызывать только другие статические методы.
- должны осуществлять доступ только к статическим переменным.
- не могут ссылаться на члены типа this или super.
Можно ли перегрузить static метод?
Перегрузить можно, но переопределить нельзя.
статический класс
Это вложенный класс, который может обращаться только к статическим полям обертывающего его класса, в том числе и приватным.
Доступ к нестатическим полям обрамляющего класса может быть осуществлен только через ссылку на экземпляр обрамляющего объекта.
К классу высшего уровня модификатор static неприменим.
особенности инициализации final static переменных
Переменные должны быть инициализированы во время объявления или в static блоке.
ключевое слово final
Для класса.
- Класс помеченный при помощи final не может иметь наследников.
Для метода.
- Метод помеченный при помощи final не может быть переопределен в классах наследниках.
Для поля.
- Поле помеченное при помощи слова final не может изменить свое значение после инициализации.
Для метода.
- Значение локальных переменных, а так же параметров метода помеченных при помощи слова final не могут быть изменены после присвоения.
интерфейс
Полностью абстрактный класс.
Создатель интерфейса определяет имена методов, списки аргументов и типы возвращаемых значений, но не тела методов (с определёнными исключениями).
модификаторы интерфейсов по умолчанию
Поля интерфейса автоматически являются public static final.
Все методы неявно объявляются как public.
методы интерфейсов
Абстрактные методы
Default-методы
Статические методы
Приватные методы
отличие абстрактного класса от интерфейса
- Наследование (Единственное | Множественное )
- Поля (Любые | Только public static final)
- Методы (Любые | Abstract, default, static, private)
- Модификаторы методов (Любые | public / private)
- Конструкторы (Да | Нет)
- Использование в лямбдах (Нет | Да)