Благодаря наследованию и полиморфизму мы можем на уровне объектно-ориентированного программирования описывать общую архитектуру работы программы в целом. А потом, создавая дочерние классы, наполнять эту программу конкретным содержимым, конкретным поведением. Это буквально переносит нас на совершенно другой, более высокий уровень программирования - целостного, абстрактного описания информационных потоков наших приложений.