Contract is an interface: what is to be done, not how.
Interface is like a class with a set of public operations but no attributes and no implementation.
A UML diagram of a Java interface:
public interface Nameable { String getName(); void setName (String aName); }
Compare to:
public abstract class Nameable { public abstract String getName(); public abstract void setName (String aName); }