Чисто на основе наследования, вы бы использовали реферат, где вы определяете явно наследуемые, абстрактные отношения (т.е. animal-> cat) и / или требуете наследования виртуальных или закрытых свойств , особенно совместно используемое состояние (которое интерфейсы не могут поддерживать).
Вы должны попытаться отдать предпочтение композиции (посредством внедрения зависимостей), а не наследованию, и заметьте, что интерфейсы, являющиеся контрактами, поддерживают модульное тестирование, разделение проблем и (в зависимости от языка) множественное наследование так, как это не может сделать абстракция.