Простое правило при определении контракта заключается в обеспечении нереализованного метода с помощью либо абстрактного класса, либо интерфейса. Таким образом, когда подкласс проектируется с намерением реализовать контракт, он должен обеспечивать реализацию нереализованных методов в родительском классе или в интерфейсе.
Однако интерфейс моделирует только поведение. Интерфейс никогда не обеспечивает реализации какого-либо рода — только поведение. Он определяет поведение, которое будет одинаковым во всех классах, между которыми, возможно, не окажется никакой связи.