The Application ERC 721 defines the base that contracts must conform to in order to be compatible with the protocol. Using the Application ERC 721 does not restrict you from inheriting from other internal or external contracts, such as other OpenZeppelin contracts or custom logic contracts specific to your application.
The Application ERC 721 inherits from multiple contracts (internal and external), overrides functions from some of the inherited contracts, and defines a few functions of its own. The following contracts are inherited:
Counters (external to the protocol)
ERC721 (external to the protocol)
ReentrancyGuard (external to the protocol)
AccessControl (external to the protocol)
ERC721Burnable (eternal to the protocol)
ERC721Enumerable (external to the protocol)
IProtocolToken (internal to the protocol)
IProtocolTokenHandler (internal to the protocol)
IZeroAddressError from IErrors (internal to the protocol)