An interface allows definition of attributes and method definitions (names, return types, argument lists) - no actual method implementations are included in interfaces. There is also an abstract class which is somewhere in between a class and an interface, with respect to abstraction. Multiple inheritance is only possible in Java when inheriting from multiple interfaces into a single class, since only definition is inherited, not functionality. So a class can inherit from one other class, but an interface or a class can inherit from multiple interfaces. But multiple inheritance creastes severe structural ugliness - and kind of completely messes up why objects were initially devised. Most object databases that I know of DO NOT ALLOW multiple inheritiance for that very reason - because multiple inheritiance flies in the face of structural perfection :)