Файл: Ооп статики Интерфейсы.docx

ВУЗ: Не указан

Категория: Не указан

Дисциплина: Не указана

Добавлен: 19.03.2024

Просмотров: 26

Скачиваний: 0

ВНИМАНИЕ! Если данный файл нарушает Ваши авторские права, то обязательно сообщите нам.

44) Сколько максимум можно имплементировать интерфейсов?
65535
45) Модификаторы доступа в интерфейсе и абстрактном классе?
У класса любые. У интерфейса public по умолчанию
46) Из обычного сделать абстрактный не используя abstract?
Объявить класс с приватным конструктором.
47) Может ли enum имплементировать интерфейсы? Наследовать классы? Почему?
Интерфейсы - да, классы - нет. Енум уже наследуется от абстрактного класса Java.lang.enum, а джава не поддерживает множественное наследование.
48) Контракт между equals и hashcode.
Если обьекты равны по equals() то их хеш-коды тоже равны

Если хеш-коды разные, то по equals() будет точно - false

Если обьекты не равны по equals(), их хеш-коды могут быть равны

Если хеш-коды равны. Обьекты могут быть равны, а могут и не равняться.
49) Использовать статич методы в обычных? Наоборот? Почему?
Статич можно использовать в обычном, а обычный в статич не имея ссылки на конкретный экземпляр класса использовать нельзя.
50) Ковариантность типа возвращаемого значения?
Ковариантность означает, что мы можем получить доступ к определенным элементам, определенным через их супертип.

Ковариантность типа возвращаемого значения - переопределенный метод родительского класса может вернуть тип, производный от типа, возвращаемого методом базового класса.
51) Передали массив в метод, сменивший его значения, изменятся ли они вне метода? Почему?
Массив находится в куче, которая также хранит данные примитивов. Передавая массив в метод, мы получим копию ссылки, по ней мы можем изменить состояние объекта в куче.

При передаче в метод примитива, создаётся копия, значение которой мы можем менять внутри метода как угодно, но на само значение это никак не повлияет.
52) Передача параметров в методы по значению или ссылке? Как передаются примитивы и объекты?
В джава в метод передается все по значению. Вне зависимости от того, что мы передаем: примитив или объект.

Если примитив, то переданное значение копируется в свою отдельную локальную переменную, изначальная переменная остается без изменений.


53) Контракт метода?
Все то что идёт после модификатора доступа.
54) Сокрытие методов(method hiding)?
Метод скрытия означает, что подкласс определяет метод класса с той же сигнатурой, что и метод класса в суперклассе. В этом случае метод суперкласса скрыт подклассом. Это означает, что: версия метода, который выполняется, не будет определяться объектом, который используется для вызова. Фактически он будет определяться типом ссылочной переменной, используемой для вызова метода.

55) Может ли Статический метод быть перегружен? Будет ли работать переопределение статич метода?
Да. Не будет. Класс потомок создаст свой статический метод не связанный с родительским классом.
56) Абстрактный класс без абстрактных методов?
Существуют.
57) Где хранятся объекты?
В куче HEAP.
58) Где хранятся ссылки на объект? Где хранятся примитивы?
В стэке.
59) varargs? Ограничения при написании?
String… words

Аргумент переменной длины, позволяющие создавать методы с произвольным количеством аргументов(JDK 5). Должен быть последним в списке аргументов и может быть записан только как аргумент некого метода.
60) Аннотация @Override?
Указывает, что далее мы собираемся переопределять метод класса родителя или интерфейса. Служит для контроля успешности действия при сборке проекта.
61) Класс Class.
Нет публичных конструкторов. Generic тип. Методы класса предназначены для получения информации о классе (объекта типа class). Можно узнать полное имя класса, его аннотации, конструкторы. Эти методы нужны для reflection. С его помощью вы можете создавать объекты, которые принадлежат этому классу и при этом заранее класс объекта вы можете не знать.
62) Экземпляр и объект класса чем отличаются?
Одно и то же.