overview on inheritance, interfaces and abstract classes