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