The @abstractmethod decorator marks a method that concrete subclasses must implement. An abstract class may also provide shared state and concrete methods, while a subclass missing any required implementation remains abstract. section 4.3.4
Vehicle contract with shared behavior
MotorVehicle declares start_engine() and stop_engine() with pass, then supplies drive() and other shared operations. Car and Truck implement the abstract methods; Truck additionally overrides turning behavior. MotorVehicle cannot be instantiated, but Car and Truck can be driven through the inherited workflow.
Abstract methods can define required algorithms, but placing duplicated algorithms in subclasses creates duplication, hardcoded behavior, and change leaks. The sports example motivates separating reusable algorithm families through the Strategy Design Pattern. section 8.2.2

