Обьясьните пожалуйста кто-нибудь, что такое "Полиморфизм"и "Инкапсуляция"
Хочу разобраться, что это! гугл ничем почти не помог. Хочу услышать мнения гугу
Хочу разобраться, что это! гугл ничем почти не помог. Хочу услышать мнения гугу
Инкапсуляция - возможность ограничить в объекте доступ к его переменным и функциям из других частей программного кода (обычно устанавливается несколько уровней доступа) .
Полиморфизм - это когда разные объекты имеют одно и то же имя, а какой из объектов с этим именем вызвать, выясняется по контексту вызова (например, по типам переменным в вызове функции или из объекта какого типа она была вызвана) .
Полиморфи́зм (от греч. πολὺ- — много, и μορφή — форма) в языках программирования — возможность объектов с одинаковой спецификацией иметь различную реализацию.
Язык программирования поддерживает полиморфизм, если классы с одинаковой спецификацией могут иметь различную реализацию — например, реализация класса может быть изменена в процессе наследования [1].
Кратко смысл полиморфизма можно выразить фразой: «Один интерфейс, множество реализаций» .
Полиморфизм — один из четырёх важнейших механизмов объектно-ориентированного программирования (наряду с абстракцией, инкапсуляцией и наследованием) .
Полиморфизм позволяет писать более абстрактные программы и повысить коэффициент повторного использования кода. Общие свойства объектов объединяются в систему, которую могут называть по-разному — интерфейс, класс. Общность имеет внешнее и внутреннее выражение:
внешняя общность проявляется как одинаковый набор методов с одинаковыми именами и сигнатурами (именами методов, типами аргументов и их количеством) ;
внутренняя общность — одинаковая функциональность методов. Её можно описать интуитивно или выразить в виде строгих законов, правил, которым должны подчиняться методы. Возможность приписывать разную функциональность одному методу (функции, операции) называется перегрузкой метода (перегрузкой функций, перегрузкой операций) .
В языках программирования инкапсуля́ция имеет одно из следующих значений, либо их комбинацию:
языковой механизм ограничения доступа к определённым компонентам объекта;
языковая конструкция, способствующая объединению данных с методами (или другими функциями) , обрабатывающими эти данные.
Инкапсуляция — один из четырёх важнейших механизмов объектно-ориентированного программирования (наряду с абстракцией, полиморфизмом и наследованием) .
В то же время, в языках поддерживающих замыкания, инкапсуляция рассматривается как понятие не присущее исключительно объектно-ориентированному программированию. Также, реализации абстрактных типов данных (например, модули) предлагают схожую модель инкапсуляции.
Сокрытие реализации целесообразно применять в следующих целях:
предельная локализация изменений при необходимости таких изменений,
прогнозируемость изменений (какие изменения в коде нужно сделать для заданного изменения функциональности) и прогнозируемость последствий изменений.