Мой профессор в колледже однажды дал большой анекдот для описания полиморфизма и инкапсуляции. Все прошло так.
Кто-нибудь знает, как работает машина для соды? (Чувствуешь путаные взгляды на то, о чем мы даже говорим об этом.) Нет? Позвольте мне сказать вам.
Вы забрасываете свои изменения, и внутри машины маленькая обезьяна, которая считает все ваши изменения, чтобы убедиться, что вы вложили достаточно денег.Когда вы нажимаете кнопку для своей соды, на свет приходит свет, указывающий обезьяне, на которую нажата кнопка, и если вы введете правильное количество изменений, он возьмет ваш выбор и выбросит его в маленькую дыру, чтобы вы могли захватить соду.
Это концепция инкапсуляции. Мы скрываем реализацию машины соды. Если у него нет одного из этих фантастических, прозрачных окон, чтобы вы могли видеть внутри, вы, честно говоря, не представляете, как это работает. Все, что вы знаете, это то, что вы вложили наличные деньги, вы нажимаете кнопку, и если вы положите достаточно, вы получите свой напиток.
Чтобы добавить к этому, вы знаете, как использовать интерфейс соды машины , поэтому поэтому до тех пор, как интерфейс аппарата следует обычному интерфейсу соды машины, вы можете использовать его. Это называется интерфейсом. Машина может доставлять напитки из Антарктиды на конвейерную ленту для всего, что вам нужно, пока вы получаете свой напиток, холодно, и вы возвращаетесь обратно.
Полиморфизм - это идея, что, когда вы используете интерфейс машины соды, он может делать разные вещи. Вот почему инкапсуляция и полиморфизм тесно связаны. В полиморфизме все, что вы знаете, это то, что вы используете реализацию SodaMachine
, которая может быть изменена, и в результате различные вещи могут быть сделаны за кулисами. Это приводит к концепции управления полиморфизмом, которая является способностью одного объекта, SodaMachine
, фактически действовать как как MonkeySodaMachine
, так и ConveyorSodaMachine
в зависимости от машины, фактически за интерфейсом.
Возможно, не дословно, а достаточно близко. По существу это сводится к двум понятиям: polymorphism и encapsulation. Дайте мне знать, если вы хотите уточнить.
[полиморфизм] (http://en.wikipedia.org/wiki/Polymorphism_in_object-oriented_programming) – Brian
вы найдете интерфейс полезно, когда вы начинаете для разработки библиотеки и ее API дружища :) –
@ Брайан, полиморфизм не полный ответ, так как это поведение уже может быть создано путем подкласса. – displayname