.. index:: contract, state variable, function, event, struct, enum, function;modifier *********************** Structure of a Contract *********************** Contracts in Solidity are similar to classes in object-oriented languages. Each contract can contain declarations of **state variables**, **functions**, **function modifiers**, **events**, **structs types** and **enum types**. Furthermore, contracts can inherit from other contracts. * State variables are values which are permanently stored in contract storage. * Functions are the executable units of code within a contract. * Function modifiers can be used to amend the semantics of functions in a declarative way. * Events are convenience interfaces with the EVM logging facilities. * Structs are custom defined types that can group several variables. * Enums can be used to create custom types with a finite set of values.