Это не должно быть принято слишком строго.
Я думаю, что основная идея заключается в том, чтобы больше сосредоточиться на программировании интерфейса, либо чистого интерфейса, либо абстрактного класса, поскольку это обеспечивает более слабую связь вашего дизайна, полиморфизм, инкапсуляцию, ...
Также помните, чтобы не нарушать принцип подстановки Лискова