Введение
Java — объектно-ориентированный язык, поэтому мы уже сталкивались с концепциями ООП. Пока ООП можно рассматривать как создание классов и на их основе — объектов. Класс — основной компонент, содержащий поля и методы. Даже в коде класса Main мы использовали ООП, хотя и не углублялись в его принципы. ООП — удобный инструмент.
Пример с Трансформером
Рассмотрим пример с трансформером. Создадим класс Трансформер. В нём будут поля (переменные) и методы (функции), описывающие трансформера: вес, скорость, сила, умения прыгать, бегать, бить и т.д. На основе класса создадим конкретный объект — конкретного робота со своими характеристиками. Благодаря ООП, мы один раз описываем характеристики и используем их для множества объектов, не переписывая код.
Основные концепции ООП
Четыре основных принципа ООП: абстракция, инкапсуляция, наследование и полиморфизм.
Абстракция
Абстракция — отделение несущественных характеристик. Например, у всех трансформеров есть скорость (общая характеристика), которую мы запишем в класс. Цвет щита — не общая характеристика, поэтому его не записываем в класс, чтобы не перегружать его. Скорость — общая характеристика, цвет щита — характеристика конкретного объекта.
Полиморфизм
Полиморфизм позволяет создавать один интерфейс для разных функций. Например, функция «работать» может реализовываться по-разному для разных объектов: один трансформер моет полы, другой убирает, третий моет посуду. Один общий метод («работать») реализуется по-своему для каждого объекта. Подробнее об интерфейсах поговорим позже.
Инкапсуляция
Инкапсуляция — защита характеристик (полей и методов). Модификаторы доступа, такие как public и private, определяют доступ к ним. Public означает доступ повсюду, а private — только внутри класса. Инкапсуляция защищает методы от внешнего вмешательства.
Наследование
Наследование — когда один класс наследует все методы (с модификатором доступа public) другого класса. Например, класс-наследник наследует все из базового класса. Подробнее о наследовании поговорим в отдельном уроке.
Мы рассмотрели основные концепции ООП: абстракцию, инкапсуляцию, наследование и полиморфизм. В последующих уроках будем создавать объекты, классы, конструкторы и использовать наследование на практике. Эта теоретическая информация важна для дальнейшего понимания ООП.