#вопросы_с_собеседований
Что такое модификаторы доступа?
Модификаторы доступа — это инструмент, при помощи которого можно настроить доступ к классам, методам и переменным.
Бывают следующие модификаторы, упорядоченные в порядке повышения доступа:
1) private — используется для методов, полей и конструкторов. Уровень доступа — только класс, внутри которого он объявлен.
2) package-private (default) — может использоваться для классов. Доступ только в конкретном пакете (package), в котором объявлен класс, метод, переменная, конструктор.
3) protected — такой же доступ, как и package-private + для тех классов, которые наследуются от класса с модификатором protected.
4) public — используется и для классов. Полноценный доступ во всем приложении.
Что такое модификаторы доступа?
Модификаторы доступа — это инструмент, при помощи которого можно настроить доступ к классам, методам и переменным.
Бывают следующие модификаторы, упорядоченные в порядке повышения доступа:
1) private — используется для методов, полей и конструкторов. Уровень доступа — только класс, внутри которого он объявлен.
2) package-private (default) — может использоваться для классов. Доступ только в конкретном пакете (package), в котором объявлен класс, метод, переменная, конструктор.
3) protected — такой же доступ, как и package-private + для тех классов, которые наследуются от класса с модификатором protected.
4) public — используется и для классов. Полноценный доступ во всем приложении.
👍13
Для чего используется PushbackInputStream?
Разновидность буферизации, обеспечивающая чтение байта с последующим его возвратом в поток. Класс PushbackInputStream представляет механизм «заглянуть» во входной поток и увидеть, что оттуда поступит в следующий момент, не извлекая информации.
У класса есть дополнительный метод unread().
#вопросы_с_собеседований
Разновидность буферизации, обеспечивающая чтение байта с последующим его возвратом в поток. Класс PushbackInputStream представляет механизм «заглянуть» во входной поток и увидеть, что оттуда поступит в следующий момент, не извлекая информации.
У класса есть дополнительный метод unread().
#вопросы_с_собеседований
👍6❤1
Какими значениями инициализируются переменные по умолчанию?
• Числа инициализируются 0 или 0.0;
• char — \u0000;
• boolean — false;
• Объекты (в том числе String) — null.
#вопросы_с_собеседований
• Числа инициализируются 0 или 0.0;
• char — \u0000;
• boolean — false;
• Объекты (в том числе String) — null.
#вопросы_с_собеседований
👍8
Что такое «абстракция»?
Абстрагирование — это способ выделить набор общих характеристик объекта, исключая из рассмотрения частные и незначимые. Соответственно, абстракция — это набор всех таких характеристик.
Представьте, что водитель едет в автомобиле по оживлённому участку движения. Понятно, что в этот момент он не будет задумываться о химическом составе краски автомобиля, особенностях взаимодействия шестерёнок в коробке передач или влияния формы кузова на скорость (разве что, автомобиль стоит в глухой пробке и водителю абсолютно нечем заняться). Однако, руль, педали, указатель поворота он будет использовать регулярно.
#вопросы_с_собеседований
Абстрагирование — это способ выделить набор общих характеристик объекта, исключая из рассмотрения частные и незначимые. Соответственно, абстракция — это набор всех таких характеристик.
Представьте, что водитель едет в автомобиле по оживлённому участку движения. Понятно, что в этот момент он не будет задумываться о химическом составе краски автомобиля, особенностях взаимодействия шестерёнок в коробке передач или влияния формы кузова на скорость (разве что, автомобиль стоит в глухой пробке и водителю абсолютно нечем заняться). Однако, руль, педали, указатель поворота он будет использовать регулярно.
#вопросы_с_собеседований
👍7
Чем отличается переопределение от перегрузки?
Перегрузка происходит в пределах одного класса, переопределение — в рамках иерархии классов.
Перегруженные методы должны отличаться сигнатурой, переопределенные — иметь одинаковую.
Перегрузка не нарушает инкапсуляцию, при переопределении может нарушаться.
Перегруженные методы не связаны с полиморфизмом, переопределенные позволяют реализовать полиморфное поведение.
В целом, перегрузка связана с компиляцией, а переопределение — с выполнением кода.
#вопросы_с_собеседований
Перегрузка происходит в пределах одного класса, переопределение — в рамках иерархии классов.
Перегруженные методы должны отличаться сигнатурой, переопределенные — иметь одинаковую.
Перегрузка не нарушает инкапсуляцию, при переопределении может нарушаться.
Перегруженные методы не связаны с полиморфизмом, переопределенные позволяют реализовать полиморфное поведение.
В целом, перегрузка связана с компиляцией, а переопределение — с выполнением кода.
#вопросы_с_собеседований
👍7
Что будет, если единственный конструктор класса объявлен как final?
— Этот конструктор нельзя будет переопределить в подклассах.
— Невозможно создать наследников от данного класса, так как нельзя переопределить единственный конструктор.
— Попытка создания подкласса приведет к ошибке компиляции, так как компилятор не сможет сгенерировать конструктор по умолчанию для подкласса.
— Единственный способ наследоваться от такого класса — использовать агрегацию, композицию или делегирование вместо наследования.
Это полезный прием для предотвращения наследования, когда оно не требуется или нежелательно по архитектурным соображениям.
#вопросы_с_собеседований
— Этот конструктор нельзя будет переопределить в подклассах.
— Невозможно создать наследников от данного класса, так как нельзя переопределить единственный конструктор.
— Попытка создания подкласса приведет к ошибке компиляции, так как компилятор не сможет сгенерировать конструктор по умолчанию для подкласса.
— Единственный способ наследоваться от такого класса — использовать агрегацию, композицию или делегирование вместо наследования.
Это полезный прием для предотвращения наследования, когда оно не требуется или нежелательно по архитектурным соображениям.
#вопросы_с_собеседований
Что делает метод repeat()?
Метод repeat() принадлежит классу String и используется для повторения строки заданное количество раз.
Позволяет легко создавать повторяющиеся строки без использования циклов.
Удобно использовать для создания разделителей, оформления вывода и т.д.
#вопросы_с_собеседований
Метод repeat() принадлежит классу String и используется для повторения строки заданное количество раз.
Позволяет легко создавать повторяющиеся строки без использования циклов.
Удобно использовать для создания разделителей, оформления вывода и т.д.
#вопросы_с_собеседований
👍5