• it is like abstract classes but allows child classes to implement multiple classes
  • cannot define variables (data members) in an interface or constructor functions
  • only public functions can be defined, no private and protected functions can be defined