a contract is an abstract contract if
ceratin fuctions are not implemented
abstract contracts can’t be compiled but
can be used as base contracts (can be inherited)
Interfaces are similar to abstract contracts but
can;t have any. functions implemented or variables defined