Forse è più facile iniziare con un'analogia non computerizzata.
Considerate se avete detto a qualcuno di "Andare al negozio e comprare un po 'del vostro cibo preferito per la cena".
Se lo dicevi a un figlio di 14 anni, probabilmente andava in bicicletta al negozio, doveva pagare in contanti per il cibo e tu avresti mangiato la pizza per cena.
Se l'hai detto a tua moglie, probabilmente andrebbe al negozio, usa una carta per pagare il cibo e potresti mangiare invece il pollo Cordon Bleu con lo Chardonnay.
In un programma, le cose funzionano un po 'allo stesso modo: specifichi qualcosa a un livello relativamente astratto (vai al negozio e prendi la cena). Ogni oggetto fornisce la propria implementazione concreta su come implementarlo e, in molti casi, fornisce alcune variazioni esattamente su ciò che sta per fare (ad esempio, come le differenze negli alimenti preferiti sopra).
Naturalmente, quando si programma, la maggior parte richiede una specifica molto più dettagliata e non ambigua.L'idea generale rimane la stessa però. Per lo scenario sopra, potresti avere una classe base (o un'interfaccia) person
che ha definito metodi come go to store
e select favorite food
e pay for purchase
. Avresti quindi implementazioni come adult
e teenager
, ognuna delle quali ha definito il proprio metodo di andare al negozio, selezionare il cibo preferito e pagare per un acquisto. Questi metodi sarebbero polimorfici, perché ogni implementazione avrebbe il proprio modo di eseguire il comando di livello superiore che hai dato.
fonte
2011-10-13 02:52:15