Абстрактные классы в Джаве OTUS
2026-03-10 12:17 Diff

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

Для того, чтобы писать на Java качественный софт, требуется изучить его базовые принципы, инструменты и функции. Немаловажную роль здесь играют объекты и функции. А еще – абстрактные классы Java. Именно о них пойдет речь далее.

Термины – что пригодится для понимания

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

  1. Алгоритмы – инструкции, принципы и правила, которые необходимы для решения поставленной перед разработчиком задачи.
  2. API – интерфейс прикладного программирования. Процедуры и правила, а также протоколы, помогающие ПО взаимодействовать друг с другом и разнообразными службами.
  3. Аргумент – передаваемое в функцию или команду значение.
  4. Переменная – единица хранения информации. Именованная ячейка памяти.
  5. Объект – связанные между собой переменные, структурные данные и константы. Они обрабатываются и выбираются совместно.
  6. Константа – значение, которое по ходу выполнения кода никогда не меняется.
  7. Массив – список или группа схожих типов значений, прошедших предварительную группировку. Множество электронных материалов.
  8. Ключевое слово – слово, зарезервированное языком программирования. Необходимо для обозначения операций, команд, функций.
  9. Указатель – переменная, содержащая адрес места в памяти.

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

Несколько слов о методах

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

Метод – функция, указывающая на то, что умеет делать имеющийся класс. В Java выступает членом classes. Обладает различными модификаторами доступа:

  1. Public – публичный. Методы и поля видимы другим классам в коде в пределах пакета или из внешних пакетов.
  2. Protected – «частный».
  3. Private – приватный. Методы и поля доступны в пределах заданного класса.
  4. По умолчанию. Применяется, когда модификатор отсутствует вовсе.

Теперь стоит рассмотреть абстрактные классы и методы более подробно.

Понятие класса

Class в Java – это шаблон или описание имеющегося в коде объекта. Object – это экземпляр класса. Пример – аналогия с человеком. У каждого есть две руки, ноги, глаза, туловище и так далее. Есть некий шаблон – это класс. Реально существующий человек – объект.

Задается класс при помощи ключевого слова class. Далее пишется его название и в фигурные скобках – описание. А именно – указываются поля и method.

Абстракции

Абстракция – качество общения с идеями, а не некоторыми событиями. Пример – электронная почта. Тут все скрыто от обычного пользователя: протоколы, а также детали происходящего во время отправки и получения сообщений. Но для того, чтобы написать и отослать e-mail, клиент может просто напечатать его содержимое. Далее – щелкнуть по кнопке, отвечающей за реализацию соответствующей функции.

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

Абстрактный класс

Класс, который содержит в себе ключевое слово abstract носит название абстрактного. Здесь программист должен запомнить следующее:

  • abstract class может содержать абстрактные методы Java – без тела (public void get(););
  • если обычный класс имеет хотя бы один единственный абстрактный метод, этот class объявляется абстрактным;
  • реализовать абстрактный класс нельзя;
  • для использования рассматриваемого элемента кода требуется наследовать его из другого класса – для обеспечения реализации методов абстрактного типа в его пределах.

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

Наглядный пример

Вот код, который продемонстрирует рассматриваемый компонент:

/* File name : Employee.java */ public abstract class Employee { private String name; private String address; private int number; public Employee(String name, String address, int number) { System.out.println("Собираем данные о работнике"); this.name = name; this.address = address; this.number = number; } public double computePay() { System.out.println("Внутри Employee computePay"); return 0.0; } public void mailCheck() { System.out.println("Отправляем чек " + this.name + " " + this.address); } public String toString() { return name + " " + address + " " + number; } public String getName() { return name; } public String getAddress() { return address; } public void setAddress(String newAddress) { address = newAddress; } public int getNumber() { return number; } }

Здесь можно увидеть класс Employee – он такой же, как обычный класс в Джаве. Он абстрактный, но имеет три поля, а также 7 методов и один конструктор.

Можно создать new экземпляр класса Employee:

/* File name : AbstractDemo.java */ public class AbstractDemo { public static void main(String [] args) { /* Следующие действия неверны и выдадут ошибку */ Employee e = new Employee("Иванов И.И.", "Минск, Беларусь", 43); System.out.println("\n Вызываем mailCheck, используя ссылку Employee --"); e.mailCheck(); } }

Но при компиляции система выдаст ошибку.

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

Вот код, который поможет рассмотреть наглядный пример наследования:

Здесь:

  1. Не получится создать экземпляр класса Employee.
  2. Можно создать экземпляр Salary. Его используют для получения доступа к трем полям и методам Employee.

После обработки кода на экране появится следующий результат:

Абстрактные методы

Пример абстрактного класса Java был рассмотрен выше. Чтобы class содержал конкретный метод, но фактическая реализация осуществлялась за счет дочерних классов, можно объявить в «родителе» абстрактный method.

Здесь стоит запомнить, что:

  • для объявления используется слово abstract;
  • ключевое слово ставится перед именем метода при его объявлении;
  • абстрактный метод имеет сигнатуру method, но не имеет тела;
  • вместо фигурных скобок ставится точка с запятой в конце.

Специализированные дистанционные компьютерные курсы помогут лучше разобраться в том, что такое public abstract void, extends, classes и не только.