Введение в объектно-ориентированное программирование — основы Java

Скрытая реализация или абстракция

Решение проблемы теперь разделено на создателей классов и программистов-клиентов. Клиентские программисты будут собирать классы, созданные создателями классов, для разработки приложения. Теперь цель создателя класса будет состоять в том, чтобы создать класс, который будет предоставлять только необходимую информацию для программиста-клиента, а остальная информация не будет доступна никому. Этот процесс сокрытия информации называется абстракцией. Но почему мы делаем эту абстракцию?

Есть две важные причины для этой абстракции.

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

2. Скрывая тендерную часть объекта от клиентского программиста, мы избегаем искажения тендерной части программистами-клиентами по ошибке или по небрежности.

Теперь, как это стало возможным в Java? В Java есть три ключевых слова: public, private и protected. Они называются спецификаторами доступа, которые определяют видимость кода.

1. Частный. Никто не может получить доступ к элементам или методам, кроме создателя класса или методов внутри класса. Никто за пределами класса не может получить доступ к этим элементам или методам. Private — это стена, построенная между методами класса, упомянутыми как private, и программистами-клиентами.

2. Защищенный — действует как частный, за исключением того, что наследующий класс может получить доступ к защищенным членам, но не к закрытым членам. Наследование будет представлено вам в ближайшее время.

3. Общедоступно. Элементы, следующие за общедоступными, доступны всем.

Значение по умолчанию, которое используется по умолчанию, если вы не укажете ни один из спецификаторов в Java, — это Private. Этот закрытый доступ также называется доступом к пакету в Java, потому что члены, которые являются закрытыми в классе, доступны другим членам класса в том же пакете, но не классам вне пакета.

Повторное использование реализации или наследования

Повторное использование кода является одним из самых больших преимуществ объектно-ориентированного языка программирования. Самый простой способ повторного использования класса — это прямое размещение объекта класса внутри нового класса. Таким образом, мы можем создать новый класс с количеством объектов разного типа. Этот способ создания нового класса из существующих классов называется композицией, и это называется отношением наличия. Например, «В книге есть страницы», где книга — это новый класс, содержащий любое количество объектов класса page. Другой пример: «У автомобиля есть двигатель», где автомобиль — это новый класс, содержащий объект класса двигатель. В композиции объекты существующих классов всегда будут закрытыми в новом классе, что делает его недоступным для клиентских программистов напрямую.

Другой способ повторного использования реализации — через наследование. Мы претерпеваем много хлопот, пока создаем класс и создаем новый класс, похожий по функциональности. Не будет ли лучше, если вы сможете клонировать существующий класс и добавлять или модифицировать клонированный класс для создания нового класса? Класс, из которого мы клонируем новый класс, называется базовым классом, суперклассом или родительским классом. Новый клонированный класс называется производным классом, унаследованным классом, подклассом или дочерним классом. Методы, являющиеся частью описателей доступа public и protected, будут клонированы или унаследованы дочерним классом от родительского класса. Также мы можем добавить новые методы или изменить существующий метод в дочернем классе.

Лучший пример, который мы можем взять, — это форма. Круг, квадрат и треугольник — это фигуры, которые будут иметь размер, цвет, положение, края и многое другое. Также мы можем рисовать, стирать, перемещать и раскрашивать фигуру. Круг, квадрат и треугольник также будут иметь размер, цвет, положение, края, и мы также можем рисовать, стирать, перемещать и раскрашивать их. Таким образом, Shape является базовым классом, а круг, квадрат и треугольник будут унаследованы от формы. Таким образом, ООП обеспечивает преимущество повторного использования кода, не позволяя вам переписывать все из базы.

Полиморфизм

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

Одним из основных различий между компилятором, не относящимся к ООП, и компилятором ООП является то, как происходит связывание. В компиляторе, отличном от ООП, происходит раннее связывание. Здесь во время компиляции компилятор генерирует вызов имени функции, и во время выполнения вызов будет разрешен на адрес кода, который необходимо выполнить. Но в компиляторе ООП вы отправляете сообщение объекту, код, который будет выполняться для этого сообщения, не будет известен до времени выполнения. Работа компилятора в этом случае заключается только в том, чтобы проверить, существует ли тот метод, который мы вызываем, для этого конкретного объекта, и проверить тип аргументов и возвращаемое значение.

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

В C++ мы используем ключевое слово virtual, чтобы сказать, что конкретный метод имеет свойство позднего связывания, но в Java по умолчанию поведение метода является динамическим связыванием или поздним связыванием и исключает необходимость для нас помнить и добавлять свойство позднего связывания. ключевое слово для того, чтобы конкретный метод имел гибкость позднего связывания.

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

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

Это просто базовое введение в Java, чтобы вы могли подробно изучить его у лучших преподавателей в отрасли в рамках нашего лучшего обучения Java в Ченнаи. Мы являемся лучшим учебным заведением в области ИТ в Ченнаи.