В чем смысл выносить код в абстрактный класс и в чем смысл выносить код в интерфейс?

QA инженерабстрактные классыинтерфейсыООПпаттерны проектирования