3.4.6 Полиморфизм и более эффективное создание ПО

iDevice ikoon 3.4.6 Полиморфизм и более эффективное создание ПО

Наследование позволяет позаботиться о том, что в случае классов выросших из одного дерева нет необходимости некоторые одинаковые возможности описывать несколько раз. Например, запоминание цвета фона и закраска им задней поверхности одинаково, как для кнопки (англ. Button) так и для метки (англ. Label, поясняющий текст) - соответствующая возможность просто была добавлена в родительский класс этих графических компонентов, откуда путём наследования оба класса получили соответствующую возможность. Подобные общие возможности также дают возможность работать с объектами, созданными на основе подклассов, унаследованных от одного класса, через переменную этого родительского класса. Например, если через «окно настроек» нужно поменять цвет фона кнопки или метки, то  для этого окну необходимо знать, что тип данного ему объекта - «графический компонент» или какой-то из его подклассов - и этого хватает, чтобы быть уверенным в том, что у этого объекта есть цвет фона и его можно поменять при помощи методов класса «графический компонент».

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