In an abstract contract, there are only a few functions that don't have the function body defined. You cannot deploy abstract contracts alone. However, you can inherit the contract and provide the definition to each function that's declared in the abstract contract.
If a contract inherits from an abstract contract and doesn't provide the implementation of the function, the inheriting contract would also be considered an abstract contract. Hence, it is the developer's responsibility to ensure that all the functions of the abstract contract are defined. Also, developer tools such as Remix and Truffle would not allow your inherited contract to be deployed.
As shown in the following example, AbstractDeposit is an abstract contract since it has a depositEther()Â function, and no function body has been provided for it. However, the...