Главная страница

JavaCore ООП. Ревью 2. 2 5 6 7 8 10 11 12 13 14 16 18 22 26 27 28 17 9 29 10 19 Что такое ооп В чем его плюсы


Скачать 27.95 Kb.
Название2 5 6 7 8 10 11 12 13 14 16 18 22 26 27 28 17 9 29 10 19 Что такое ооп В чем его плюсы
АнкорJavaCore ООП
Дата23.02.2023
Размер27.95 Kb.
Формат файлаdocx
Имя файлаРевью 2.docx
ТипДокументы
#951641

20 1 21 15 3 30 23 4 24 25

2 5 6 7 8 10 11 12 13 14 16 18 22 26 27 28 17 9 29

10 + 19

-1.Что такое ООП? В чем его плюсы?

+2.Перечислите основные принципы ООП

-3.Что такое инкапсуляция? Приведите пример инкапсуляции?

-4.Что такое полиморфизм? Приведите пример полиморфизма?

+5.Что такое наследование? Приведите пример наследования? Зачем оно нужно?

+6.Что такое класс? Объект?

+7.Как передаются объекты в метод?

+8.Что такое переопределение метода в Java?

+9.Что такое перегрузка метода в Java?

+10.Что такое нативные методы, их плюсы и минусы?

+11.Какие модификаторы доступа могут быть у класса?

+12.Что такое final? Что может быть final? Как они работают?

+13.Как реализована неизменность String?

+14.Как реализовать свой Immutable тип данных?

-15.Что такое ключевое слово static?  Что может быть static?

+16.Могут ли нестатические методы перегрузить статические?

+17.Что такое пакет? Как создать пакет?

+18.Что такое конструкторы? Конструктор по-умолчанию?

19.Расскажи, что такое this и super? Когда мы обязаны использовать this и super?

-20.Класс Object и все методы кроме wait, notify, notifyAll

-21.Зачем нужен метод finalize?

+22.Из-за чего происходят коллизии? 

-23.В чём разница между instanceOf и getClass?

-24.Перечислите методы именно класса Enum?

-25.Что такое интерфейс? Когда использовать интерфейс?

+26. Можно ли создать поле в интерфейсе?

+27.Есть ли в Java множественное наследование? Зачем реализовывать интерфейс интерфейсу?

+28.Можно ли создавать статик методы в интерфейсах?

29.Что такое абстрактный метод?

-30.Что такое абстрактный класс? Чем отличается от обычного?

1.Что такое ООП? В чем его плюсы?

Парадигма программирования в которой система представляется в виде набора объектов, которые взаимодействуют между собой.

Каждый объект обладает идентичностью(то, что отличает один объект класса от другого, по идентичности определяется метод equals), состоянием(набор полей и значений), поведением(набор всех методов)

Плюсы: визуально код проще и легче читать, меньше одинакового кода, сложные программы можно разбивать на простые части. Увеличивается скорость написания(можно создать прототип и дорабатывать его).

2.Перечислите основные принципы ООП

Инкапсуляция

Наследование

Полиморфизм

Абстракция (Выделение значимых характеристик предмета и отбрасывание второстепенных, в зависимости от ситуации(Если мы описываем человека работника – важны его имя, дата рождения, ИНН и т.д.

Если описываем человека модель – важны вес, цвет волос, цвет глаз и т.д.

3.Что такое инкапсуляция? Приведите пример инкапсуляции?

Ограничение доступа к данным и возможностям их изменения.

Пример, объект у которого есть поле возраст. Если не пользоваться инкапсуляцией, в любой части кода можно будет задать полю возраст отрицательное значение, что не имеет смысла. Мы можем сделать ограничить доступ к полю с помощью модификаторов, а значение получать/изменять через геттеры/сеттеры.

4.Что такое полиморфизм? Приведите пример полиморфизма?

Возможность работать с несколькими типами так, будто это один и тот же тип. При этом поведение разное в зависимости от типа, к которому они принадлежат.

Пример: класс Animal с методом voice(), и два наследника Cat и Dog

У классов наследников методы voice отличаются. Но если мы создадим ссылку Animal, а присвоим ей объект-наследник, при вызове метода voice() будет вызываться метод наследника. При вызове нет необходимости указывать какого-именно наследника.

Второй пример: мы можем указать родительский класс в параметрах метода, а передавать классы наследники.

Полиморфизм позволяет перегрузку метода.

5.Что такое наследование? Приведите пример наследования? Зачем оно нужно?

Механизм, который позволяет описать новый класс на основе существующего. При этом свойства и функциональность родительского класса заимствуются новым классом.

Позволяет избегать повторного использования кода (поля и методы родительских классов можно использовать в потомках), следовательно сами классы становятся проще. А недостающую функциональность потомка можно дописать отдельно.

6.Что такое класс? Объект?

Класс – шаблонная конструкция, описывающая объект(свойства и поведения)

Объект создается из существующего класса (при помощи слова new)

7.Как передаются объекты в метод?

Передается копия ссылки на область памяти, где расположен объект.

8.Что такое переопределение метода в Java?

Изменение реализации родительского метода у класса наследника.

9.Что такое перегрузка метода в Java?

Использование методов с одним и тем же именем, но с разными типами и количеством параметров.

10.Что такое нативные методы, их плюсы и минусы?

Методы, реализованные на другом языке(обычно С или С++)

Плюсы: использование библиотек на других языках, не реализованных на Java

Возможность получить что-то напрямую от операционной системы(прокси пользователя)

Повышение производительности

Минусы: на различные платформы и операционные системы нужна различная реализация
11.Какие модификаторы доступа могут быть у класса?

Default (класс видят только расположенные с ним в одном пакете классы), Public(видят все)

12.Что такое final? Что может быть final? Как они работают?

Модификатор, делающий дальнейшее изменение объекта невозможным. В случае с классами – запрещает наследование. В случае с полями – запрещает изменение.

Для метода – запрет на переоределение в подклассах.

Для ссылочных переменных(и массивы) – запрещает изменить ссылку на данный объект(ссылку изменить нельзя, но состояние объекта можно)

String это final

13.Как реализована неизменность String?

Final класс, значение строки хранится в массиве private final char. Нет сеттеров.

14.Как реализовать свой Immutable тип данных?

Сделать класс final. все элементы static final, заданные явно или в конструкторе. Не делать сеттеры.

15.Что такое ключевое слово static?  Что может быть static?

Модификатор, применяемый к полю, блоку, методу или внутреннему классу. Указывает на привязку к текущему классу, а не к объекту

16.Могут ли нестатические методы перегрузить статические?

Могут. Получится два разных метода. Статический будет принадлежать классу и будет доступен через его имя. Нестатический будет принадлежать конкретному объекту и доступен через вызов метода этого объекта.

17.Что такое пакет? Как создать пакет?

Способ объединить группу классов, интерфейсов и подпакетов.

Могут содержаться в сжатом виде в JAR файлах. На уровне файловой системы пакеты это и есть папки, в которых лежат другие папки (подпакеты) и классы. 

Во время создания пакета вы должны выбрать ему имя и включить оператор package вместе с этим именем поверх каждого исходного файла, который содержит классы, интерфейсы, перечисления и типы аннотаций, которые вы хотите включить в пакет.

Оператор package должен быть первой строкой в исходном файле. Может быть только один запрос package в каждом исходном файле, и он применяется ко всем типам в этом файле.

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

18.Что такое конструкторы? Конструктор по-умолчанию?

Специальный метод, имя совпадает с именем класса и вызывается при создании экземпляра объекта совместно с оператором new. Не имеет возвращаемого типа. Цель конструктора — правильно инициализировать объект перед его использованием.

Конструктор по умолчанию – созданный компилятором конструктор, если не определены другие конструкторы для класса.

19.Расскажи, что такое this и super? Когда мы обязаны использовать this и super?

Это специальные ключевые слова, представляют экземпляр класса и суперкласса. Используем для вызова конструктора, для обращения к переменным(особенно в случае, если имена переменных класса перекрываются локальными переменными в текущем блоке)

this и super – статические переменные, ими нельзя пользоваться в нестатическом контексте.

Внутри конструктора долнжы стоять на первом месте, в одном конструкторе может быть что-то одно.


20.Класс Object и все методы кроме wait, notify, notifyAll

-clone() protected Object – создает и возвращает копию объекта

-equals(Object obj) – проверяется равенство двух объектов

-finalize() (protected void) -

-getClass() final Class - Возвращает класс среды выполнения этого Object.

-hashCode() int – возвращает значение хэш-кода

-toString() String – возвращает строковое представление объекта

21.Зачем нужен метод finalize?

Вызывается сборщиком мусора для объекта, когда сборщик мусора определяет, что ссылок на объект больше нет.

Java машина может отложить уничтожение объекта, как и вызов метода finalize на сколько угодно. И не гарантирует, что этот метод вообще будет вызван. В куче ситуаций ради оптимизации он не вызывается.

Кратко: можно использовать только в двух случаях:

проверка/подчистка ресурсов с логированием и при работе с нативным кодом, который не критичен к утечке ресурсов. Замедляет работу GC по очистке объекта в 430 раз и может быть вообще не вызван.

Deprecated с 9 версии. Более подходящие классы для освобождения ресурсов – Cleaner, PhantomReference

22.Из-за чего происходят коллизии? 

Ситуация когда у разных объектов одинаковые хеш-коды называется коллизией. Вероятность коллизии зависит от используемого алгоритма генерации хеш-кода. Количество уникальных хэш кодов ограничено значениями Integer.

23.В чём разница между instanceOf и getClass?

При использовании getClass вы можете проверить только принадлежность к определенному классу и не более. При использовании instanceOf вы можете проверить как принадлежность к классу, так и к родительским классам.

24.Перечислите методы именно класса Enum?

Clone() исключение CloneNotSupportedException

compareTo(E o) сравнивает это перечесление с указанным объектом

describeConstable() - дескриптор

equals(Object other) – true, если указанный объект равен константе enum

getDeclaringClass() – возвращант объект класса, соответствующий типу enum для этой константы enum

hashCode() – хэш код для этой константы перечесления

name() – имя константы, в точности так, как указано в объявлении

ordinal() – порядковый номер константы(ее позицию в объявлении enum

toString() – возвращает имя константы enum, содержащейся в объявлении

valueOf(Class enumClass, String name)возвращает константу enum указанного класса enum с указанным именем

25.Что такое интерфейс? Когда использовать интерфейс?

Интерфейсы определяют некоторый функционал, не имеющий конкретной реализации, который затем реализуют классы, применяющие эти интерфейсы. И один класс может применить множество интерфейсов.

26.Можно ли создать поля в интерфейсе?

Поля могут быть, но только static final


27.Есть ли в Java множественное наследование? Зачем реализовывать интерфейс интерфейсу?

Класс в java может расширить только один родительский класс. Множественное наследование невозможно. Но класс может реализовывать множество интерфейсов. Интерфейсы – не классы, интерфейс может расширить более чем один родительский интерфейс. Реализовывать для расширения дочернего интерфейса родительским. Дочерний наследует методы родительского интерфейса.

28.Можно ли создавать статик методы в интерфейсах?

Можно, но вызываются они только с использованием имени интерфейса, а не класса

29.Что такое абстрактный метод?

Метод без реализации, который обязаны реализовывать дочерние классы.

Ключевое слово abstract перед именем метода. Содержит сигнатуру метода, но не содержит тело. Точка с запятой в конце

30.Что такое абстрактный класс? Чем отличается от обычного?

Класс, объявленный с ключевым словом abstract.

Его нельзя реализовать, может содержать абстрактные и неабстрактные методы.

Для использования нужно наследовать его из другого класса.

Абстрактные методы обязательно должны быть реализованы дочерними классами.


написать администратору сайта