Every contract in Solidity is similar to the concept of classes. Contracts can inherit from other contracts, in a fashion similar to classes. A contract can contain a declaration of the following:
- State variables
- Functions
- Function modifiers
- Events
- Struct types
- Enum types