Видео: Уроки Java для начинающих | #18 - Абстрактные классы 2025
Абстрактный класс в Java - это класс, который содержит один или несколько абстрактные методы , , которые являются просто декларациями методов без тела, то есть без исполняемого кода, реализующего класс или метод. Абстрактный метод похож на прототип метода, объявляющий тип возвращаемого метода и список параметров, но не обеспечивающий фактическую реализацию метода.
Вы не можете создать экземпляр абстрактного класса. Однако вы можете создать подкласс, который расширяет абстрактный класс и обеспечивает реализацию абстрактных методов, определенных абстрактным классом. Вы можете создать экземпляр подкласса.
Чтобы создать абстрактный метод, вы указываете абстрактный аннотация и заменяете тело метода точкой с запятой:
public abstract return-type method-name (список параметров);
Вот пример:
public abstract int hit (int batSpeed);
Чтобы создать абстрактный класс, вы используете реферат в объявлении класса и включаете хотя бы один абстрактный метод. Например:
public abstract class Ball {public abstract int hit (int batSpeed);}
Вы можете создать подкласс из абстрактного класса следующим образом:
public class BaseBall extends Ball {public int hit (int batSpeed) {// код, реализующий метод хита, идет здесь}}
Когда вы подклассифицируете абстрактный класс, подкласс должен предоставить реализация для каждого абстрактного метода в абстрактном классе. Другими словами, он должен переопределять каждый абстрактный метод.
Абстрактные классы полезны, когда вы хотите создать общий тип, который используется в качестве суперкласса для двух или более подклассов, но сам суперкласс не является фактическим объектом. Если, например, у всех сотрудников есть как зарплата, так и ежечасно, имеет смысл создать абстрактный класс Employee, а затем использовать его в качестве базового класса для подклассов SalariedEmployee и HourlyEmployee.
Вот несколько дополнительных сведений об абстрактных классах:
-
Не все методы абстрактного класса должны быть абстрактными. Класс может обеспечить реализацию для некоторых из его методов, но не для других. На самом деле, даже если класс не имеет абстрактных методов, вы все равно можете объявить его абстрактным. (В этом случае класс не может быть создан.)
-
Частный метод не может быть абстрактным. Все абстрактные методы должны быть общедоступными.
-
Класс не может быть абстрактным и окончательным.