1. Что такое ООП?
Объектно-ориентированное программирование или ООП – это методология программирования, которая представляет программное обеспечение в виде набора объектов. Каждый объект – это не что иное, как экземпляр класса.
2. Разница между процедурным программированием и ООП?
Процедурное программирование:
- Основано на функциях.
- Определяет данные для всей программы.
- В нем нет возможности повторного использования кода.
- Следует концепции нисходящего программирования.
- Природа языка сложна.
- Трудно изменять, расширять и поддерживать код.
Объектно-ориентированное программирование:
- Основано на реальных объектах.
- Инкапсулирует данные.
- Обеспечивает больше возможностей для повторного использования кода.
- Следует парадигме программирования «снизу вверх».
- Он менее сложен по своей природе, поэтому его легче модифицировать, расширять и поддерживать.
3. Зачем использовать ООП?
ООП позволяет повторно использовать код. Данные и код связаны вместе с помощью инкапсуляции. ООП имеет возможности для сокрытия данных, поэтому частные данные могут храниться и сохранять конфиденциальность. Задачи могут быть разделены на различные части, что упрощает их решение. Концепция полиморфизма обеспечивает гибкость, так как одна сущность может иметь несколько форм.
4. Каковы основные концепции ООП?
Основными концепциями ООП являются:
- Наследование
- Инкапсуляция
- Полиморфизм
- Абстракция
5. Что такое инкапсуляция?
Инкапсуляция является частью концепции ООП. Она относится к объединению данных с методами, которые работают с этими данными. Это также помогает ограничить любой прямой доступ к некоторым компонентам объекта.
6. Что такое абстракция?
Абстракция – это концепция ООП для построения структуры объектов реального мира. Она «показывает» только существенные атрибуты и «прячет» ненужную информацию от посторонних глаз. Основная цель абстракции – скрыть ненужные детали от пользователей. Это одна из самых важных концепций ООП.
7. Что такое перегрузка методов?
Существует концепция, согласно которой два или более метода могут иметь одинаковое имя. Но они должны иметь разные параметры, разное количество параметров, разные типы параметров или и то, и другое. Такие методы известны как перегруженные методы, и эта особенность называется перегрузкой методов.
8. Что такое переопределение методов?
Переопределение методов – это концепция объектно-ориентированного программирования. Это особенность языка, которая позволяет подклассу или дочернему классу предоставлять конкретную реализацию метода, который уже предоставлен одним из его суперклассов или родительских классов.
9. Типы наследования в ООП
- Гибридное наследование
- Множественное наследование
- Одноуровневое наследование
- Многоуровневое наследование
- Иерархическое наследование
10. Что такое объект?
Объект – это экземпляр класса, а также он обладает собственной индивидуальностью и поведением.
11. Что такое метод?
Метод – это описание набора инструкций, который также называется процедурой.
12. Что такое класс?
Класс – это тип данных, определяемый пользователем, который содержит переменные, свойства и методы. Он также помогает найти свойства объекта.
13. Что такое конструкторы?
Конструктор имеет то же имя, что и класс. Конструктор также является особым видом метода. Он используется для инициализации объектов класса.
14. Типы конструкторов
Типы конструкторов зависят от языка:
- Частный конструктор.
- Конструктор по умолчанию.
- Конструктор копирования.
- Статический конструктор.
- Параметризованный конструктор.
15. В чем разница между классом и структурой?
Класс – это определенный пользователем чертеж, на основе которого создаются объекты. Он состоит из методов (набор инструкций), которые выполняются над объектами.
Структура – это определенная пользователем коллекция переменных. Структуры также являются различными типами данных.
16. Что такое модификаторы доступа?
Модификаторы доступа или спецификаторы доступа – это ключевые слова в объектно-ориентированных языках. Они помогают установить доступность классов, методов и других членов.
17. Какие языки относятся к концепции ООП?
Simula известен как первый объектно-ориентированный язык программирования, наиболее популярными языками ООП являются:
- Java.
- JavaScript.
- Python.
- C++.
- Visual Basic . NET.
- Ruby.
- Scala.
- PHP.
18. Что такое наследование?
Если вы порождаете класс от другого класса, это называется наследованием.
Дочерний класс наследует все публичные и защищенные свойства и методы от родительского класса. Дочерний класс также может иметь свои собственные свойства и методы. Наследуемый класс определяется с помощью ключевого слова extends.
Множественное наследование:
- Если класс наследует более одного базового класса.
- Пример: класс, объясняющий ребенка. Этот класс –
ребенок
– наследует от двух базовых классов, которыми являютсямать
иотец
.
Многоуровневое наследование:
- Если класс наследуется от другого класса, который сам является подклассом какого–либо другого базового класса.
- Пример: класс под названием спортивный велосипед, который наследуется от базового класса велосипед. В свою очередь, класс
велосипед
наследуется от другого классатранспортное средство
.
19. Что такое гибридное наследование?
Сочетание множественного и многоуровневого наследования известно как гибридное наследование.
20. Что такое иерархическое наследование?
Когда один базовый класс имеет более одного подкласса. Например, класс фруктов может иметь в качестве подклассов «яблоко», «манго» и т. д.
21. Каковы ограничения наследования?
Эти ограничения увеличивают время выполнения и трудозатраты и требуют переходов от одного класса к другому. Родительский класс и дочерний класс всегда тесно связаны. Внесение изменений в программу потребует изменений как в родительском, так и в дочернем классе. Наследование требует тщательной реализации, иначе это приведет к неправильным результатам.
22. Что такое суперкласс?
Суперкласс или базовый класс – это класс, который работает как родитель для некоторых других классов.
Например, класс транспортного средства является суперклассом класса велосипеда.
23. Что такое подкласс?
Подкласс – это класс, который наследуется от другого класса. Например, класс велосипед
является подклассом или производным от класса транспортное средство
.
24. Что такое полиморфизм?
Полиморфизм является одним из наиболее используемых и основных понятий в языках ООП. Полиморфизм – концепция, согласно которой различные классы могут использоваться с одним и тем же интерфейсом. Каждый из этих классов может иметь свою собственную реализацию интерфейса.
25. Что такое статический полиморфизм?
Статический полиморфизм или статическое связывание – это один из видов полиморфизма, который возникает во время компиляции. Примером полиморфизма во время компиляции является: перегрузка методов.
26. Что такое динамический полиморфизм?
Динамический полиморфизм, динамическое связывание или полиморфизм во время выполнения – это также часть полиморфизма, который в основном реализуется во время выполнения программы. Пример полиморфизма во время выполнения программы: переопределение метода.
27. Что такое перегрузка операторов?
Перегрузка операторов используется для реализации операторов, использующих определенные пользователем типы, на основе передаваемых вместе с ними аргументов.
28. Проведите различие между перегрузкой и переопределением.
При перегрузке два или более методов имеют одинаковое имя, но у них разные параметры или сигнатура.
Переопределение – дочерний класс наследует методы с теми же параметрами/подписью, которые присутствуют в базовом классе.
29. Зачем нужна инкапсуляция?
Инкапсуляция позволяет скрыть данные и обернуть данные и код, который работает над ними, в единое целое.
30. В чем разница между модификаторами доступа public, private и protected?
Модификатор | Доступность из самого класса | Доступность из производного класса | Доступность из любого места программы |
Public | Да | Да | Да |
Private | Да | Нет | Нет |
Protected | Да | Да | Нет |
31. Что такое абстракция данных?
Абстракция данных – одна из самых важных особенностей ООП. Она позволяет отображать только важную информацию. Она помогает скрыть детали реализации.
Например, при использовании мобильного телефона вы знаете, как можно отправить сообщение или позвонить кому–то, но не знаете, как это происходит на самом деле.
Это и есть абстракция данных, поскольку детали реализации скрыты от пользователя.
32. Как достичь абстракции данных?
Абстракция данных может быть достигнута двумя способами:
- Абстрактный класс.
- Абстрактный метод.
33. Что такое абстрактный класс?
Абстрактный класс – это класс, который состоит из абстрактных методов.
Что же такое абстрактный метод?
Эти методы в основном объявлены, но не определены, и если эти методы должны быть использованы позже в каком–то подклассе, то эти методы должны быть определены исключительно в подклассе.
34. Проведите различие между абстракцией данных и инкапсуляцией
Абстракция:
- Решает проблему на уровне проектирования.
- Помогает скрыть детали реализации.
Инкапсуляция:
- Решает проблему на уровне реализации.
- Обертывает код и данные в единое целое и помогает скрыть их от посторонних глаз.
35. Что такое виртуальные функции?
Виртуальные функции – это часть функций, которые присутствуют в родительском классе, и они переопределяются подклассом.
Эти функции помогают достичь полиморфизма во время выполнения.
36. Что такое деструктор?
Деструктор – это метод, который вызывается автоматически при уничтожении объекта.
Деструктор также восстанавливает пространство кучи, которое было выделено для уничтоженного объекта. Он также начинает закрывать файлы и соединения базы данных объекта и т. д.
37. Что такое конструктор копирования?
Конструктор копирования в основном создает объекты путем копирования переменных из другого объекта того же класса. Основной задачей конструктора копирования является создание нового объекта из существующего.
38. Для чего используется Finalize?
Finalize используется для освобождения неуправляемых ресурсов, а также для очистки перед сборкой мусора (GC). Он выполняет задачи управления памятью.
39. Что такое сборка мусора (GC)?
Сборка мусора – это часть автоматического управления памятью. Сборщик мусора помогает освободить места, занятые объектами. Эти места перестают существовать.
40. Что такое конечная переменная?
Конечная переменная не изменяется и всегда ссылается на один и тот же объект благодаря свойству необратимости.
41. Что такое исключение?
Исключение – это вид сообщения, которое перерывает и появляется, когда возникает проблема с нормальным выполнением программы. Исключения выдают ошибку и передают эту ошибку обработчику исключений для ее устранения. Состояние программы сохраняется, как только возникает исключение.
42. Что такое обработка исключений?
Обработка исключений в объектно-ориентированном программировании является наиболее важной концепцией. Она используется для управления ошибками. Обработчик исключений помогает выбрасывать ошибки, а затем перехватывать их для дальнейшего решения.
43. В чем разница между ошибкой и исключением?
Ошибка: в основном относится к проблеме, и эти проблемы не должны возникать в приложениях.
Исключение: в основном это условие, которое приложение может попытаться выполнить.
44. Что такое блок try/catch?
Блок try/catch
помогает обрабатывать исключения. Блок try
объясняет набор утверждений, в которых может возникнуть ошибка. Блок catch
в основном перехватывает исключение.
45. Что такое блок finally?
Блок finally
выполняется, когда блок try
завершается, а также выполняется даже в случае возникновения неожиданного исключения. Блок finally
обычно содержит какую–то важную часть программы.
46. Можете ли вы вызвать метод базового класса, не создавая его экземпляр?
Да, вы можете вызывать базовый класс без его инстанцирования, но есть некоторые условия, которые необходимо соблюдать:
- Метод должен быть статическим.
- Базовый класс наследуется каким-либо другим подклассом.
Комментарии