مثالی در مورد polymorphism میزنم.
فرض کن یک جعبه داری که قراره توش میوه بریزی. مثلا سیب، هلو، زردآلود و ... آیا باید همه اینا رو من برات بشمرم و نام ببرم؟ نه. من میگم «میوه» و شما اوکی هستی باهاش. هر میوهای اومد میریزی توی جعبه. حالا اون «سیب» درسته وقتی میگه draw عکس سیب رو نشون میده، و هلو هم عکس هلو، اما نقش میوه رو هر دو دارن.
اگر به جعبه بگم «سیب» قبول کن، باید یه جعبه دیگه هم بسازم که «زردآلو» قبول کنه. و الی آخر. اما اگه بگم میوه قبول کن، همون یه بار کافیه.
مثل متدهامون:
void sort(List data)
به جای اینکه بزنی:
void sort(StringArrayList data)
void sort(IntegerArrayList data)
void sort(IntegerLinkedList data)