Similarities and differences between inheritance and interface